问题标签 [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.
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/)尽管我最初抱有希望。
sql-server - 对不同服务器上的多个数据库运行查询
我正在开发一个 PowerShell 脚本来对多个服务器和数据库运行查询,其想法是将服务器和数据库动态添加到数组中并执行它们。
目前我被困在所有东西都结合在一起的最后一部分。我可以添加服务器,但不能添加数据库。
我想要实现的目标:带有 MFP GUI 的 PowerShell 脚本对多个 MSSQL 服务器运行查询,这些服务器都包含相同的数据库(具有不同的数据),但数据库具有不同的名称,如Sql_Data-Node1
,SqlData-Node2
等。
我遇到的问题:我设法将服务器动态添加到数组中,当我运行查询时,我得到了正确的响应。在这种情况下,我使用了主数据库并将其设为静态(-database 'master'
)。当我尝试对数据库执行相同操作时(将它们添加到数组中),我收到一个错误:
我的代码:
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 执行此操作?
sql - Powershell Invoke-Sqlcmd 和输入中的多个选择语句
我面临的问题在于使用下面的 invoke-sqlcmd 命令
$sqlfile 中的示例 sql 是:
我所追求的输出类型将是两个表一个接一个的单一结果。
例如..
这甚至可能吗?
我尝试使用Invoke-Sqlcmd2进行相同的操作,认为 PSCustomObject 数据类型会更容易使用..
然而,这似乎只处理第一个选择查询并忽略第二个。
sql-server - sqlcmd / Invoke-SqlCmd 中的转义变量
我正在使用 powershell 并使用Invoke-SqlCmd
. 我能够将变量传递给 SQL:
这让我hello
按预期返回。但是,如果我有一个变量,其值包含等于(=
):
它给了我以下错误:
用于为
Invoke-Sqlcmd
cmdlet 定义新变量的格式无效。请使用 'var=value' 格式定义新变量。
我找不到任何sqlcmd
关于Invoke-SqlCmd
我应该如何正确转义值的文档。
如何转义发送到sqlcmd
/的变量Invoke-SqlCmd
?
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,我必须重新导入该模块。
任何想法为什么会发生这种情况?
powershell - 指定要在 Powershell 调用 sqlcmd 中使用的部分目录
需要能够单独运行位于多个子目录中的 .sql 文件。该脚本将在目录不同但子目录相同的多台计算机上运行。所以我希望能够将目录定义为这样的变量。
sql-server - 批处理文件中的多个 sqlcmd 命令
我有多个 sqlcmd 命令要从批处理文件中一次运行。单独执行时,每个语句都可以完美运行。但是,如果我在 bat 文件中给出 5 个 sqlsmd 命令,它只会执行第一个命令,然后我在命令行屏幕中看到 1> 并且没有任何反应。如何解决这个问题?
注意:每行之前的 CALL 语句不起作用这是我在研究中找到的唯一解决方案
我在做什么的例子::
sql-server - Powershell:将 System.Object 转换为纯字符串
我正在尝试从 SQL 服务器检索一些信息并将其分配给一个变量:
在这种情况下$svrParams
是一个带有一堆参数的System.Object :
我试图通过分配给这样的新变量来一一拉出它们:
问题是变量仍然是System.Object类型。因此,当我尝试将其与另一个字符串连接时,我得到 2 行结果:
请让我知道是否有办法从对象中提取纯文本。在具有相同结果的变量之前尝试了 [string]。
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
视图。