繁体   English   中英

通过 Powershell 连接到 SQL 服务器(非本地)

[英]Connection to SQL Server through Powershell (not local)

我正在尝试使用 PowerShell 连接到远程 SQL 服务器实例。

我的用户名是ONE_PERSON

这是我正在使用的代码:

$user = "ONE_PERSON" 
$connectionString = "Server=$dataSource; uid=$user; pwd=$pwd; Database=$database; Integrated Security = False;" 
$connection = New-Object System.Data.SqlClient.SqlConnection 
$connection.ConnectionString = $connectionString 
$connection.Open()

当我运行这个时,我得到一个错误

用户“ONE_Person”登录失败

出于某种原因,它会将我的用户切换为小写,即使当我自己运行$user时,它仍然以大写的ONE_PERSON显示我。

我什至尝试通过在末尾使用.ToUpper来强制它保持大写

和见解将不胜感激

$pwd 是 PowerShell 中的保留路径变量。 尝试将您的变量保存为 $password 之类的东西,然后看看它是否有效。

1.创建连接

2.创建您的命令(将要执行的 T-SQL)

3.创建你的数据适配器(如果你想检索数据)

4.创建你的数据集(适配器填充这个对象)

创建连接您只需创建 System.Data.SqlClient.SqlConnection 的 object 并传递将用于连接到给定 SQL 服务器实例的连接字符串……不要忘记打开它。

$sqlConn = New-Object System.Data.SqlClient.SqlConnection
$sqlConn.ConnectionString = “Server=localhost\sql12;Integrated Security=true;Initial Catalog=master”
$sqlConn.Open()

创建你的命令这里有几个选项,因为 SqlConnection 实际上包含一个方法,你可以使用它来创建你的命令 object,或者你可以一起创建一个单独的 object。 我已经看到使用了这两个选项,所以它在很大程度上是一个偏好。

$sqlcmd = $sqlConn.CreateCommand()
<# or #>
$sqlcmd = New-Object System.Data.SqlClient.SqlCommand
$sqlcmd.Connection = $sqlConn
$query = “SELECT name, database_id FROM sys.databases”
$sqlcmd.CommandText = $query

创建您的数据适配器根据定义,这个 object“代表一组数据命令和一个用于填充数据集的数据库连接”。 您创建 SqlDataAdapter 并将其传递给之前创建的命令 object,$sqlcmd。

$adp = New-Object System.Data.SqlClient.SqlDataAdapter $sqlcmd

创建您的数据集(并填充它)这个 object 将是 System.Data.DataSet 的类型,并且定义为简单的“内存中的数据缓存”。 需要注意的是,您正在运行的查询必须加载到 memory 中,因此数据集越大,需要的 memory 就越多。

$data = New-Object System.Data.DataSet
$adp.Fill($data) | Out-Null

检索您的数据在您完成所有操作之后,您可能想知道您是如何看到这些数据的? 数据本身位于 DataSet object 的 Table 属性内的表集合中。 现在取决于您正在使用的 .NET 的版本,您可能实际上需要指定集合的索引(例如 Tables[0]),但这通常仅在 .NET 4.0 以下的旧版本中需要。

$data.Tables
<# or #>
$data.Tables[0]

有关更多信息,请观看此视频https://youtu.be/P01_Zd11HX0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM