Sql-Server

如何從具有數百個表和時間戳列的 SQL Server 數據庫中導出數據?

  • November 13, 2017

我有一個包含數百個表的 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;

引用自:https://dba.stackexchange.com/questions/190698