【问题标题】:Connect to SQL Server Database from PowerShell从 PowerShell 连接到 SQL Server 数据库
【发布时间】:2014-10-30 05:16:33
【问题描述】:

我在网上看了一段时间,发现了许多类似的问题,但由于某种原因,我似乎无法正常工作。

我只是尝试连接到 SQL 服务器数据库并将查询结果输出到文件 - 请参阅下面的 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?
  • sql server 管理工作室 2012
  • 您是否尝试连接到 SQL Azure 实例?
  • SQL Server Management Studio 2012 不是“SQL 版本” - 它是一个可以连接和管理 SQL Server 的应用程序,它可以连接到 任何 版本的从 2000 年(可能更旧)到 2014 年的 SQL Server。
  • sql 的版本 ... sql 2000 ... sql 2012 ... 无关紧要,但感谢您的评论

标签: sql-server powershell connection-string


【解决方案1】:

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

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

要使用特定凭据连接,请删除 Integrated Security

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

【讨论】:

    【解决方案2】:

    在连接字符串中将 Integrated security 更改为 false。

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

    【讨论】:

      【解决方案3】:
      # database Intraction
      
      $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 Intraction
      clear
      

      【讨论】:

        【解决方案4】:

        Window认证的答案如下

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            要以活动目录用户身份连接到 SQL Server,只需以活动目录用户身份启动 PowerShell 并使用 TrustedSecurity=true 连接到 SQL Server

            【讨论】:

              【解决方案7】:

              我确实删除了集成安全性...我的目标是使用带有活动目录用户名/密码的连接字符串登录到 sql 服务器。当我这样做时,它总是失败。格式无关紧要... sam company\user ... upn 不管@company.com ... 基本用户名。

              【讨论】:

                【解决方案8】:

                我认为只有当相关的特定用户被明确设置为使用 SQL 服务器数据库上的密码登录时才有效,即不从集成的 Windows/单点登录继承凭据

                【讨论】:

                  猜你喜欢
                  • 2017-12-31
                  • 2012-05-05
                  • 1970-01-01
                  • 2013-07-08
                  • 2018-04-14
                  • 2016-05-25
                  相关资源
                  最近更新 更多