问题标签 [invoke-sqlcmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1061 浏览

sql-server - SQL Server - 单用户模式 ​​- 保留哪个用户

问题

有没有办法在将数据库置于单用户模式时指定该用户(在我的情况下是当前用户),并确保即使在该用户断开连接后,单个会话仍为该定义的用户保留;也就是说,它是真正的单用户而不是单并发用户?

背景

给出一些背景...

我们有一些脚本可以在我们的测试环境中刷新数据。最近一个失败,错误指出运行脚本的用户帐户无权访问数据库。经调查,该用户是数据库的系统管理员;所以这显然不是真的。但是,我发现该脚本将数据库置于Single User模式。查看数据库上的活动会话时,我可以看到单个用户与预期帐户不同(而是属于间歇性轮询该数据库的系统的另一个服务帐户)。我的假设是发生了以下情况:

  • 脚本以 UserA 身份运行
  • 脚本将 DB 置于单用户模式
  • 脚本执行一些查询/ies
  • 脚本在执行其他一些任务时关闭当前连接
  • UserB 尝试连接数据库;成功,因为 UserA 会话现已关闭
  • UserB 的会话保持打开状态(因为 UserB 是具有连接池的服务,即使在操作完成后会话保持打开状态)。
  • UserA 尝试重新连接到 DB;访问被拒绝,因为 UserB 进行了单个会话

有各种可能的解决方案。

  • 重写脚本以保持持久连接(可能需要付出很多努力,尤其是在我不熟悉代码的情况下)
  • 禁用所有可能尝试间歇性连接的服务(有点破坏了使用单用户模式的意义/还有很多额外的努力来调查所有可能连接的帐户,并保持这一点)
  • 在脚本中添加一个捕获以终止竞争的 SPID,从而回收单个用户会话(我不喜欢终止 SPID,因为这会影响事务完整性)
  • 使用魔法(即看到这个问题的公认答案;希望如此)

更新

该代码使用 PowerShellInvoke-SqlCmd为每个命令运行创建和删除连接;因此,一旦将数据库置于单用户模式,连接就会断开。我查看了这个命令参数,看看是否有用于池/持久连接的选项,但我能找到的最接近的是DedicatedAdministratorConnection,我似乎应该避开(http://www.brentozar.com/archive/2011/ 08/dedicated-admin-connection-why-want-when-need-how-tell-whos-using/)尽管我最初抱有希望。

0 投票
1 回答
2731 浏览

sql-server - 对不同服务器上的多个数据库运行查询

我正在开发一个 PowerShell 脚本来对多个服务器和数据库运行查询,其想法是将服务器和数据库动态添加到数组中并执行它们。

目前我被困在所有东西都结合在一起的最后一部分。我可以添加服务器,但不能添加数据库。

我想要实现的目标:带有 MFP GUI 的 PowerShell 脚本对多个 MSSQL 服务器运行查询,这些服务器都包含相同的数据库(具有不同的数据),但数据库具有不同的名称,如Sql_Data-Node1,SqlData-Node2等。

我遇到的问题:我设法将服务器动态添加到数组中,当我运行查询时,我得到了正确的响应。在这种情况下,我使用了主数据库并将其设为静态(-database 'master')。当我尝试对数据库执行相同操作时(将它们添加到数组中),我收到一个错误:

我的代码:

0 投票
4 回答
2243 浏览

sql-server - SQL - 自动结果到 CSV 或文本文件

我想知道是否有人可以提供帮助。

我在 SQL 中有许多查询(都在单独的 *.sql 文件中)。我想知道是否有办法自动运行这些查询或批量运行它们以保存到 csv 或 txt 文件?

此外,我在这些查询中加入了变量,这些变量需要在运行查询之前每周进行一次修改。

谢谢。

凯杰

您能否就变量提供一些额外的帮助?以前我会声明并将变量设置为:

声明@TW_FROM DATETIME

声明@TW_TO DATETIME

设置@TW_FROM = '2015-11-16 00:00:00'; 设置@TW_TO = '2015-11-22 23:00:00';

如何使用 sqlcmd 执行此操作?

0 投票
1 回答
937 浏览

sql - Powershell Invoke-Sqlcmd 和输入中的多个选择语句

我面临的问题在于使用下面的 invoke-sqlcmd 命令

$sqlfile 中的示例 sql 是:

我所追求的输出类型将是两个表一个接一个的单一结果。

例如..

这甚至可能吗?

我尝试使用Invoke-Sqlcmd2进行相同的操作,认为 PSCustomObject 数据类型会更容易使用..

然而,这似乎只处理第一个选择查询并忽略第二个。

0 投票
4 回答
7876 浏览

sql-server - sqlcmd / Invoke-SqlCmd 中的转义变量

我正在使用 powershell 并使用Invoke-SqlCmd. 我能够将变量传递给 SQL:

这让我hello按预期返回。但是,如果我有一个变量,其值包含等于(=):

它给了我以下错误:

用于为Invoke-Sqlcmdcmdlet 定义新变量的格式无效。请使用 'var=value' 格式定义新变量。

我找不到任何sqlcmd关于Invoke-SqlCmd我应该如何正确转义值的文档。

如何转义发送到sqlcmd/的变量Invoke-SqlCmd

0 投票
2 回答
319 浏览

sql-server - Powershell SqlPs 模块未正确导入

我有一个安装了 SQL Server 2012 的(非常干净的)Windows Server 2008 R2 Build。我在使用 PowerShell(版本 3)时遇到问题。

我正在尝试使用 Invoke-Sqlcmd cmdlet。但是,当我调用 get it 时,我收到一条消息,指出“Invoke-Sqlcmd”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。

如果我运行 Import-Module SqlPs -Verbose -Force (绕过安全策略),它会起作用。但是,它仅在选项卡打开时才会持续。如果我打开一个新选项卡,尝试运行另一个脚本或重新打开 Powershell ISE,我必须重新导入该模块。

任何想法为什么会发生这种情况?

0 投票
1 回答
152 浏览

powershell - 指定要在 Powershell 调用 sqlcmd 中使用的部分目录

需要能够单独运行位于多个子目录中的 .sql 文件。该脚本将在目录不同但子目录相同的多台计算机上运行。所以我希望能够将目录定义为这样的变量。

0 投票
3 回答
5468 浏览

sql-server - 批处理文件中的多个 sqlcmd 命令

我有多个 sqlcmd 命令要从批处理文件中一次运行。单独执行时,每个语句都可以完美运行。但是,如果我在 bat 文件中给出 5 个 sqlsmd 命令,它只会执行第一个命令,然后我在命令行屏幕中看到 1> 并且没有任何反应。如何解决这个问题?

注意:每行之前的 CALL 语句不起作用这是我在研究中找到的唯一解决方案

我在做什么的例子::

0 投票
0 回答
2121 浏览

sql-server - Powershell:将 System.Object 转换为纯字符串

我正在尝试从 SQL 服务器检索一些信息并将其分配给一个变量:

在这种情况下$svrParams是一个带有一堆参数的System.Object :

我试图通过分配给这样的新变量来一一拉出它们:

问题是变量仍然是System.Object类型。因此,当我尝试将其与另一个字符串连接时,我得到 2 行结果:

请让我知道是否有办法从对象中提取纯文本。在具有相同结果的变量之前尝试了 [string]。

0 投票
1 回答
65 浏览

sql-server - 使用 PSTypeNames 更改 Invoke-SqlCmd 的数据元素

我想开发一种模式,以便在执行连接到数据库的 PowerShell 函数时轻松地在数据的“视图”之间切换。

基于这篇文章Quick Hits: Set the Default Property Display in PowerShell on Custom Objects,我创建了:

-View未指定参数时,All使用该设置:

指定参数时-View,修改默认视图:

问题:

  • 有没有更有效的方法来做到这一点?
  • 是否可以PSTypeNames为整个查询设置 ,而不必将其分配给每一行(从而消除对 的需要Foreach)?
  • 可以为验证集中的每个项目分配别名吗?例如,PS> Get-CustomObject d将使用Demographics视图。