我对 PowerShell 很陌生,现在我找到了 dbatools.io,我想在其中运行 SQL 代理中的 PowerShell 任务,例如
$ExportPath = $env:TEMP + '\DriveSpace.csv'
$datatable = Import-Csv $ExportPath | Out-DbaDataTable
Write-DbaDataTable -SqlServer MyServer -Database Utils -InputObject $datatable -Table dbo.FreeSpaceOnDiskDrive -AutoCreateTable
Run Code Online (Sandbox Code Playgroud)
它开始了,但它永远不会结束。我也尝试过执行此操作的任务:
Get-DbaDatabaseSpace -SqlServer MyServer -IncludeSystemDBs | Out-DbaDataTable | Write-DbaDataTable -SqlServer MyServer -database utils -Table dbo.DiskSpaceExample -AutoCreateTable
Run Code Online (Sandbox Code Playgroud)
同样的问题。它在 Windows PowerShell ISE 中运行正常,但只是在 SQL 代理中挂起。所以现在它为我创建了一个新表,并用数据填充它,但工作只是继续运行。
我正在尝试在 SQL 代理作业 (SQL Server 2016) 中设置 PowerShell 脚本。我正在使用第三方模块 DBATOOLS.psd1,它似乎是我遇到语法错误的地方。目前我的 SQL 作业有一行代码失败:
Import-Module e:\dbatools-master\dbatools-master\dbatools.psd1
Run Code Online (Sandbox Code Playgroud)
为什么作业失败并出现以下错误?当我通过 PowerShell ISE 运行它时,此命令工作正常。
Error Message: Unable to start execution of step 1 (reason: line(5): Syntax error). The step failed.
Run Code Online (Sandbox Code Playgroud) sql-server powershell sql-server-agent sql-server-2016 dbatools
我被要求更改已投入生产几年的数据库的排序规则,因为它在部署时设置不正确。
所以我的研究表明,为了改变所有列的排序规则,你必须放弃约束和其他什么,它看起来很快就会变得丑陋。所以我想只是编写所有对象的脚本,查找/替换对旧排序规则的所有引用,创建新数据库,然后使用 dbatools 复制数据:
Get-DbaDbTable -SqlInstance SourceServer -Database SourceDb |
foreach-object
{ Copy-DbaDbTableData -DestinationDatabase TargetDb -DestinationTable $_.Name }
Run Code Online (Sandbox Code Playgroud)
这是更改所有内容排序规则的有效方法吗?乍一看,它似乎运行得相当顺利(即,通过数据迁移没有错误)。
如果重要的话,从 SQL_Latin1_General_CP1_CI_AS 到 SQL_Latin1_General_CP437_CI_AI。
我希望利用 dbatools powershell 模块来满足我们的 SQL Server 管理需求。安装过程不适合跨大量服务器进行安装。在环境中的所有 SQL Server 上安装 dbatools 或利用我们用于数据库管理的服务器作为安装和管理的中心位置是否真的有必要,甚至是最佳实践?似乎我看过的很多命令都可以远程使用。谢谢你。
我已经使用Get-MSSQLLinkPasswords
Powershell 脚本很长时间了,它提供了巨大的帮助。该脚本解密特定 Windows 服务器上所有链接服务器的密码,并以纯文本形式显示给您。此功能甚至已合并到dbatools Copy-SqlLinkedServer
脚本中。
运行脚本有一些安全注意事项,如下所示
该脚本必须在 MSSQL 服务器上本地运行(因为 DPAPI 需要访问本地机器密钥)。执行脚本的用户还必须具有对所有数据库实例(用于 DAC 连接)的 sysadmin 访问权限和 Windows 服务器上的本地管理员权限(以访问注册表中的熵字节)。此外,如果启用了 UAC,则必须以管理员身份运行该脚本。
在最近升级到 SQL Server 2016 之前,此脚本一直运行良好。我想知道是否有人在 SQL Server 2016 下遇到过此脚本的任何问题。也许 SQL Server 2016 中的某些安全模型已更改,并且此脚本无法解密密码现在。
如果时间允许,我将尝试查看该dbatools Copy-SqlLinkedServer
脚本是否仍然适用于 2016 年。
sql-server powershell linked-server sql-server-2016 dbatools
我按照https://dbatools.io/offline/ 上的说明进行操作:
下载压缩包并解压
运行$env:PSModulePath
以查找所有路径。
复制到C:\Program Files\WindowsPowerShell\Modules
.
跑 Get-ChildItem -Recurse "C:\Program Files\WindowsPowerShell\Modules" | Unblock-File
当我尝试运行时Export-DbaInstance -SqlInstance
,出现以下错误:
术语 Export-DBAInstance 无法识别”。
任何帮助将不胜感激。