[英]Automate truncate/copy of table data
每個星期,我都必須運行一個截斷一堆表的腳本。 然后我使用導出數據任務將數據移動到另一台服務器(相同的數據庫名稱)。
服務器未鏈接,我無法保存導出作業,並且我的權限/設置受到 DBA 的限制(我是數據庫的管理員)。 我僅在兩台服務器上都有 windows 身份驗證。 服務器是不同的版本(2005/2008)。
我的問題是有沒有辦法在我修改服務器的能力有限的情況下自動執行此操作? 也許使用 Powershell?
一周又一周地在導出向導中選擇所有這些表格和內容是一件痛苦的事情。
如果您有權訪問 SQL 服務器管理控制台應用程序,請從其他系統嘗試此操作。
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
您可以使用 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
如果您沒有 dbatools: https://dbatools.io/getting-started/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.