使用 SQL 的 Powershell

Powershell with SQL

我想创建一个 PowerShell 脚本来执行以下操作

1) 在 SQL 中创建 Login/User 2) 授予对数据库的访问权限 3) 删除对数据库的访问

过程会是这样

1) 连接到 SQL 服务器(实例)-> 连接到该实例中的数据库 -> 查看 Login/User 是否存在 -> 如果不存在 -> 创建登录名 ->​​ 创建用户 ->授予对数据库的访问权限。

注:

1) 用户是 Windows 2) 有时我想连接到多个 SQL 实例。所以脚本还应该检查提到的数据库是否存在于该实例中。

你主要需要的命令是:Invoke-SQLcmd (documentation)

如果您希望能够调用此命令并且没有安装 SSMS,则需要 SQL features pack

中的 PowershellTools 和 SharedManagementObject 包

这是它的用法示例。

$infos = @{
     'ServerInstance'='YourServer';
     'Database' = 'master'; 
     'Username' = 'saOrAccountwithSufficientRights';
     'Password' = 'password' 
} 


$cmd = invoke-sqlcmd @infos -Query 'Select * from sys.databases'

# to see output in a table
$cmd | Format-Table 

从那里,您可以轻松地调用 SQL 并从 Powershell 执行您想要的任何逻辑。

.

也就是说,

根据您的描述,您似乎已经熟悉 SQL 而对 Powershell 则完全不熟悉。您可以选择通过 SQLCMD 路径在您的 SQL 中获得更多脚本可能性,这将允许您使用动态变量并根据您的问题执行几乎所有您希望执行的逻辑(包括迭代多个服务器通过同一个脚本)

(参考:SQLAuthority

一些SQLCMD信息: SQLCMD Utility

当然,如果您更愿意在 Powershell 中使用它,那么可以学习一些基础知识,进行一些尝试并提出问题,提供您的代码示例以及您遇到的困难,我们将能够根据您的需求为您提供帮助