我正在開發服務器上工作名爲SQLDEV01
,db名稱爲University
,表名爲cse.students
。在我對錶cse.students的工作中,我丟失了一些行,所以我需要從生產server.production服務器名稱的所有確切數據是SQLPROD01
。如何將表格從生產複製到開發?
如何在不使用SSIS的情況下查詢獲取生產數據?
我正在開發服務器上工作名爲SQLDEV01
,db名稱爲University
,表名爲cse.students
。在我對錶cse.students的工作中,我丟失了一些行,所以我需要從生產server.production服務器名稱的所有確切數據是SQLPROD01
。如何將表格從生產複製到開發?
如何在不使用SSIS的情況下查詢獲取生產數據?
有一個幾種方法來做到這一點。一個幾乎是失敗安全的是:
在Microsoft SQL Management Studio中展開源服務器的服務器節點 - 然後展開數據庫節點。右鍵單擊源數據庫並選擇任務 - >生成腳本。彈出對話框時,點擊下一步。選擇「選擇特定數據庫對象」單選按鈕。展開Tables節點以檢查要複製的表格。點擊底部的下一個按鈕。點擊高級按鈕。在彈出腳本DROP和CREATE的選項中,選擇右側的腳本DROP和CREATE。對於選擇腳本的數據類型選擇右側的模式和數據。點擊確定。現在回到主對話框,您需要選擇「保存到剪貼板」或「保存到新的查詢窗口」。我通常選擇剪貼板,因爲我通常會選擇不同的服務器,但選擇最適合您的服務器。點擊下一步。再次點擊下一步,腳本將根據您的選擇生成。現在只需在目標數據庫上運行該腳本。
在從SSMS執行以下操作之前,從開發到生產服務器設置鏈接服務器。所有的代碼都應該在開發服務器上執行。
http://technet.microsoft.com/en-us/library/ms188279.aspx
-- On Development server [SQLDEV01]
TRUNCATE TABLE [University].[cse].[students];
GO
-- Use link server to move data
INSERT INTO
[University].[cse].[students]
SELECT
*
FROM
[SQLPROD01].[University].[cse].[students]
GO
這是假設有目標沒有標識列。
如果您確實有標識列,請在執行上述插入操作之前/之後打開/關閉插入。
-- Before Insert, execute this statement
SET IDENTITY_INSERT [University].[cse].[students] ON
GO
-- After Insert, execute this statement
SET IDENTITY_INSERT [University].[cse].[students] OFF
GO
您還可以使用OPENROWSET命令創建ad-hoc連接。
http://technet.microsoft.com/en-us/library/ms190312.aspx
INSERT INTO
[University].[cse].[students]
SELECT
PRD.*
FROM
OPENROWSET('SQLNCLI', 'Server=SQLPROD01;Trusted_Connection=yes;',
'SELECT * FROM [University].[cse].[students]') AS PRD;
我沒有檢查你的環境的語法,請檢查。
如果添加了臨時查詢(0),讓DBA暫時打開它們(1)。在生產服務器上執行以下操作。
http://msdn.microsoft.com/en-us/library/ms187569.aspx
-- Show all settings
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
-- What is the current setting?
sp_configure
GO
-- Allow add hoc queries
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
如果他(她)不允許,你被卡住物理鏈接服務器。
如果您使用代表團 - 選擇#3,您必須注意雙跳問題。
http://blogs.msdn.com/b/sql_protocols/archive/2006/08/10/694657.aspx
我會在生產特定帳戶有權選擇數據配置鏈接服務器。見選擇#4。
:消息15281,級別16,狀態1,行1 SQL Server阻止訪問組件'Ad Hoc Distributed Queries'的STATEMENT'OpenRowset/OpenDatasource',因爲此組件作爲此服務器的安全配置的一部分被關閉。系統管理員可以使用sp_configure啓用'Ad Hoc Distributed Queries'。有關啓用「Ad Hoc分佈式查詢」的更多信息,請在SQL Server聯機叢書中搜索「Ad Hoc Distributed Queries」。 – user3203331
如果您無法從SSMS - >鏈接服務器 - >表中瀏覽,則無法正確設置它。如果您仍然有問題,請回復。 –
。感謝很多它幫助我 – user3203331
請更換您的輸入
使用此查詢廣義查詢SELECT *成targetTable從[sourceserver] [sourcedatabase] [DBO]。[sourceTable會]
:用戶'NT AUTHORITY \ ANONYMOUS LOGON'登錄失敗。 – user3203331
對於鏈接的服務器,需要設置正確的憑據。這是默認的匿名。 –
@ashu:非常感謝ashu – user3203331
有多少行,你在這個表中有生產? –
將其添加爲鏈接服務器?然後你可以直接查詢(從SQLPROD01.University.cse.students插入cse.students select *)http://msdn.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure –
@ peter.petrov.Nearly 2k行 – user3203331