我的问题的背景
在任何时候,我都期待着穿着黑色西装和黑色太阳镜的保安人员来带我走,因为我所有的 sql server 登录尝试......
我使用并改编了iris classon 的示例以通过 Powershell 连接到数据库。修改后的代码使用 Integrated Security=True"
$dataSource = my_enterprise_db_server
$database = my_db
$connectionString = "Server=$dataSource;Database=$database;Integrated Security=True;"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$table = new-object “System.Data.DataTable”
$query = "..."
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
...
有效的热狗。谢谢鸢尾花。
我阅读了snapin 和 Import-Module sqlps执行 sql 命令的方式。我还阅读了Michael Sorens在他的回答中提供的所有链接。我可以挂载一个 sqlserver 连接mount mydb SQLSERVER SQLSERVER:\SQL
,使用 ls 或 dir,沿着对象的路径走,等等。我还修改了 Iris 提供的主要部分
$table = Invoke-Sqlcmd –Server $dataSource –Database $database -Query $query
这个版本的 Invoke-Sqlcmd 允许我连接到“企业”数据库。提供的所有参考资料的问题是他们希望您使用 localhost sqlexpress 数据库。我尝试使用的那一刻
Set-Location SQLSERVER:\SQL\my_enterprise_db_server\my_db
或类似的结构,我收到一条以
...警告:无法获取 SQL Server 服务信息。尝试连接到“my_enterprise_db_server”上的 WMI 失败,出现以下错误:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
我还看到提到了 SQLCMDSERVER 和 SQLCMDDBNAME 环境变量。我将这些设置为
$env:SQLCMDDBNAME = "my_db"
$env:SQLCMDSERVER = "my_enterprise_db_server"
set-location sqlserver:\sql
ls
生产
MachineName
-----------
localhost
问题
对于不在本地计算机上的数据库,如何正确使用 set-location 或 New-PSDrive-Name?