我有 2 個 MSSQL 伺服器正在運行,資料集或多或少相同。這實際上是一個生產/開發設定。
現在,我的工作流程是這樣的。每天都會對生產伺服器上的每個資料庫進行備份。我透過網路(數十千兆位元組)將備份傳輸到開發伺服器。我使用生產伺服器上的備份「恢復」開發伺服器上的資料庫,這樣我就有了當前的資料集。
我的問題是這樣的:
是否有一種簡單快速的方法可以從 MSSQL 伺服器資料庫「匯出」單一表並將其匯入到不同 MSSQL 伺服器的資料庫中?
我對「最佳實踐」類型的操作更感興趣,而不是一些臨時操縱的 POS 技巧。
更新
經過一番谷歌搜尋後,我發現 MSSQL Server 的一個函數可以產生一個腳本,該腳本可以匯出表並在運行時導入它。我無法使用它,因為我需要將表匯入到另一台伺服器。
答案1
您也可以直接在目標伺服器上透過 SQL 取得資料。如果您有網路存取權限:
SELECT a.*
INTO <YOUR TARGET TABLE>
FROM OPENROWSET('SQLNCLI', 'Server=<IP/SERVERNAME>;Trusted_Connection=yes;',
'SELECT *
FROM <YOUR TABLE>
') AS a;
但索引必須自行建立。
或者您使用 INSERT:
INSERT INTO
<YOUR TARGET TABLE>
FROM OPENROWSET('SQLNCLI', 'Server=<IP/SERVERNAME>;Trusted_Connection=yes;',
'SELECT *
FROM <YOUR TABLE>
') AS a;
答案2
匯出部分已在DBA處得到答覆:
https://dba.stackexchange.com/questions/25755/take-a-backup-of-a-single-table-in-the-sql-server
如何在 SQL Server 上匯出單一表也在 Stackoverflow 上得到了多次解答:
https://stackoverflow.com/questions/680552/table-level-backup
谷歌也提供了很多方法:
匯出單一表後,可以透過任何方式(例如 rsync,或 SFTP、scp)傳輸該表,然後匯入它。