SQL Server 自动截断/复制表数据

oiopk7p5  于 2023-01-25  发布在  其他
关注(0)|答案(2)|浏览(169)

每周,我都要运行一个脚本来截断一堆表,然后使用导出数据任务将数据移动到另一个服务器(相同的数据库名称)。
服务器没有链接,我无法保存导出作业,我的权限/设置受到DBA的限制(我是数据库管理员)。我只在两台服务器上使用Windows身份验证。服务器是不同的版本(2005/2008)。
我的问题是有没有办法用我有限的修改服务器的能力来自动化这件事?也许使用Powershell?
每周在导出向导中选择所有这些表和东西是一件痛苦的事情。

0x6upsns

0x6upsns1#

如果您可以访问SQL Server管理控制台应用程序,请尝试从其他系统执行此操作。

C:\> bcp ExportImportFile.inp out prod.dbo.[Table] -b 10000 -S %SQLSERVER% -U %USERNAME% -P %PASSWORD% -T -c > C:\Temp\ExportImport.log

C:\> sqlcmd -S %SQLSERVER% -U %USERNAEM% -P %PASSWORD% -Q "Use Prod;TRUNCATE TABLE [Table];" >> C:\Temp\ExportImport.log

C:\> bcp prod.dbo.[Table] in ExportImportFile.inp -b 10000 -S %SQLSERVER% -U %USERNAME% -P %PASSWORD% -T -c >> C:\Temp\ExportImport.log
mpgws1up

mpgws1up2#

您可以使用DBATOOLS:

$splat = @{
  SqlInstance         = '{source instance}'
  Database            = 'tempdb'
  Destination         = '{dest instance}'
  DestinationDatabase = 'tempdb'
  Table               = 'table1' # you can provide a list of tables
  AutoCreateTable     = $true
  Truncate            = $true
}
Copy-DbaDbTableData @splat

如果没有dbatool:https://dbatools.io/getting-started/

相关问题