我正在编写一个Powershell脚本来自动化SQL Server,其中一部分需要将我的本地帐户作为管理员添加到数据库中。
create login [MYDOMAIN\myusername] from windows
go
sp_addsrvrolemember [MYDOMAIN\myusername], 'sysadmin'
go
这需要通过提升的sqlcmd
命令运行。
我是Powershell和SQL Server的新用户,非常感谢您的帮助。
答案 0 :(得分:0)
您正在寻找Invoke-Sqlcmd cmdlet
。
将SQL Server命令(低于1)保存在文件中,并将其另存为SQLInput.sql
create login [MYDOMAIN\myusername] from windows
go
sp_addsrvrolemember [MYDOMAIN\myusername], 'sysadmin'
go
然后,您可以使用Run As Administrator
运行PowerShell命令提示符并运行以下命令,如:
Invoke-Sqlcmd -InputFile "C:\SQLInput.sql" | Out-File -filePath "C:\SQLOutput.rpt"
修改强>
您可以使用-Query
选项以内联方式运行查询,例如
Invoke-Sqlcmd -Query "create login [MYDOMAIN\myusername] from windows;"
捕获响应,是为了确保Query是否成功运行。您可以使用-AbortOnError
开关;这将在错误时中止命令。
否则,您可以在PowerShell中使用Try .. Catch .. Finally
构造,如
Try
{
Invoke-Sqlcmd -Query "create login [MYDOMAIN\myusername] from windows;"
}
Catch
{
[system.exception]
"caught a system exception"
}
Finally
{
"end of script"
}
详细了解Powershell Here
中的异常处理答案 1 :(得分:0)
PowerShell有一些流行的TSQL选项
使用Invoke-SqlCmd2的示例(通常是我的TS命令):
Invoke-Sqlcmd2 -ServerInstance SomeInstance -Database SomeDatabase -Query "create login [MYDOMAIN\myusername] from windows;"
SQLPSX通常使用.NET和SMO库,提供更像用户友好的函数,其行为类似于Cmdlet。不幸的是,这似乎是一个死的项目,有些材料已经过时了。 Here's a good post由其中一位撰稿人开始。
祝你好运!