从 PowerShell 连接到 SQL Server 数据库

问题描述 投票:0回答:8

我在网上浏览了一段时间,发现了很多类似的问题,但由于某种原因,我似乎无法让它工作。

我只是尝试连接到 SQL Server 数据库并将查询结果输出到文件 - 请参阅下面的 PowerShell 脚本。我不确定如何将用户 ID 和密码集成到连接字符串中。

$SQLServer = "aaaa.database.windows.net"
$SQLDBName = "Database"
$uid ="john"
$pwd = "pwd123"
$SqlQuery = "SELECT * from table;"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True; User ID = $uid; Password = $pwd;"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

$DataSet.Tables[0] | out-file "C:\Scripts\xxxx.csv"

收到以下错误消息:

使用“1”个参数调用“Fill”时出现异常:“此版本的 SQL Server 不支持 Windows 登录。”

sql-server powershell connection-string
8个回答
37
投票

Integrated Security
User ID
\
Password
身份验证是互斥的。要以运行代码的用户身份连接到 SQL Server,请从连接字符串中删除
User ID
Password

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"

要使用特定凭据进行连接,请删除

Integrated Security
:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID = $uid; Password = $pwd;"

21
投票

在连接字符串中将集成安全性更改为 false。

您可以通过使用您拥有的用户名/密码打开 SQL 管理工作室来检查/验证这一点,并查看是否可以从那里连接/打开数据库。笔记!也可能是防火墙问题。


9
投票
# Database Interaction

$SQLServer = "YourServerName" #use Server\Instance for named SQL instances!
$SQLDBName = "YourDBName"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; 
User ID= YourUserID; Password= YourPassword" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = 'StoredProcName'
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) 
$SqlConnection.Close() 

#End :Database Interaction
clear

3
投票

Window验证答案如下

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLServer;Database=$SQLDBName;Integrated Security=True;"

2
投票

假设您可以使用集成安全性,您可以删除用户 ID 并通过:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"

1
投票

要以 Active Directory 用户身份连接到 SQL Server,只需以 Active Directory 用户身份启动 PowerShell 并使用

TrustedSecurity=true

连接到 SQL Server

0
投票

我确实删除了集成安全性...我的目标是使用带有活动目录用户名/密码的连接字符串登录到sql服务器。当我这样做时,它总是失败。格式无关紧要... sam 公司\用户 ... upn [电子邮件受保护] ... 基本用户名。


-1
投票

我认为只有当相关特定用户明确设置为使用 SQL Server 数据库上的密码登录时,即不从集成 Windows/单点登录继承凭据时,这才可能起作用

© www.soinside.com 2019 - 2024. All rights reserved.