相关疑难解决方法(0)

从PowerShell连接到SQL Server数据库

我已经在网上看了一会儿,发现了许多类似的问题,但由于某种原因,我似乎无法让这个工作.

我只是想连接到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"
Run Code Online (Sandbox Code Playgroud)

收到以下错误消息:

使用"1"参数调用"Fill"的异常:"此版本的SQL Server不支持Windows登录."

sql-server powershell connection-string

31
推荐指数
3
解决办法
18万
查看次数

PowerShell Invoke-SqlCmd和内存使用情况

如果我执行以下Powershell命令:

Invoke-Sqlcmd `
  -ServerInstance '(local)' -Database 'TestDatabase' `
  -Query "select top 1000000 * from dbo.SAMPLE_CUSTOMER" | Out-Null
Run Code Online (Sandbox Code Playgroud)

我看到我的内存使用量不断增加。它使用1GB的内存。

如果再次启动该命令,则内存增加到1.8GB,然后减少到800MB(垃圾回收?),然后再次开始增长。

我尝试按照http://blogs.technet.com/b/heyscriptingguy/archive/2013/07/30/learn-how-to-configure文章中的步骤将PowerShell Shell和插件的内存占用减少到100MB -powershell-memory.aspx,但是我仍然看到内存增加远远超过已配置的100MB。

我有一些问题:

  1. 为什么PowerShell不遵守设置MaxMemoryPerShellMB给出的内存限制?
  2. 为什么要Invoke-Sqlcmd吃掉内存,而不是“忘记”管道中处理的记录
  3. 为什么在完成处理后,PowerShell进程不自动回收内存?
  4. 如何在不占用大量内存的情况下处理许多SQL记录?

sql-server powershell

5
推荐指数
0
解决办法
889
查看次数

标签 统计

powershell ×2

sql-server ×2

connection-string ×1