Sql-Server
如何從具有數百個表和時間戳列的 SQL Server 數據庫中導出數據?
我有一個包含數百個表的 SQL Server 數據庫,它們都有時間戳列。我無權訪問備份或伺服器的文件系統。要使用導出數據嚮導,我必須進入每個表的映射並將時間戳列目標設置為忽略。這非常耗時。使用 SSMS 2017 (17.3)。
關於如何以最小的努力導出數據的任何想法?
如果執行 SQL 服務的帳戶可以訪問任何網路共享,那麼您可以使用數據庫備份到共享文件夾,並從那裡恢復。
BACKUP DATABASE [dbname] TO DISK = '\\servername\sharedfoldername\dbname.bak' RESTORE DATABASE [dbname] FROM DISK = '\\servername\sharedfoldername\dbname.bak'
或者您可以使用 bcp.exe。使用 SSMS 對象資源管理器編寫所有表的腳本,並在所需數據庫上執行腳本使用 TSQL 建構所有 bcp.exe 命令,如下所示:
select 'bcp.exe ' + quotename(object_schema_name(object_id)) + '.' + quotename(name) + ' out "\\server\someshare\' + name + '.bcp" -n -S ' + @@servername + ' -d "sourceDb" -T ' from sys.tables order by name; select 'bcp.exe ' + quotename(object_schema_name(object_id)) + '.' + quotename(name) + ' in "\\server\someshare\' + name + '.bcp" -S "DestinationInstance" -d "destinationDb" -T ' from sys.tables order by name;