[SqlServer] 資料轉置 及 本機建立DBLink至雲端AzureDB

如題,近期專案中的測試資料庫放在Azure,在資料轉置的途中,使用過幾種方式,其中最基本的就是使用 [匯出資料] 功能,較為麻煩一點的就是建立 DBLink,以下說明。

1.  [匯出資料]功能

    1.1  對資料庫點擊右鍵選擇 [匯出資料],並點擊下一步
              


    1.2   [選擇資料來源],就是你當前資料的存放位置,如下圖所示:


    1.3  [選擇目的地],就是你要轉置過去的雲端DB,如下圖所示:


      1.4   [選擇資料表] ,就是你要轉置過去的資料表,再按一直下一步即可,如下圖所示:




      1.5   [執行結果] ,若是欄位都有對應到,基本會成功,若有失敗,表示兩個來源的資料結構有差異,需調整某一方的資料結構:


2.  使用 DBLink 轉置資料

    2.1     建立 AzureDB 的 DBLink 若是使用精靈建立,很有可能會報錯,錯誤範例如下:

               Reference to database and/or server name in 'Sample.sys.sp_tables_rowset2' is not supported in this version of SQL Server

     2.2    經過查詢後,建立 AzureDB 的 DBLink 建議使用指令方式,指令如下:

EXEC sp_addlinkedserver
@server='AZURE_DB',								-- (可自訂)雲端連線的名稱
@srvproduct='',									--	預設空
@provider='sqlncli',							--	預設 sqlncli
@datasrc='sample.database.windows.net',			-- (需正確)雲端連線伺服器
@location='',									--	預設空
@provstr='',									--	預設空
@catalog='AdventureWorks2019'					-- (需正確)雲端連線的資料庫名稱

EXEC sp_addlinkedsrvlogin 
@rmtsrvname = 'AZURE_DB',						-- (可自訂)雲端連線的名稱
@useself = 'false',								--	預設空
@rmtuser = 'admin',								-- (需正確) 使用者名稱(帳號)
@rmtpassword = 'abcd1234'						-- (需正確) 密碼

EXEC sp_serveroption 'AZURE_DB', 'rpc out', true	-- (需正確) 需對應上方的雲端連線伺服器

      2.3    之後就可以透過下指令的方式取得  AZURE_DB 的資料了,後續新刪修查就跟T-SQL一樣,不多作介紹了。

SELECT TOP 1000 * FROM [AZURE_DB].[AdventureWorks2019].[dbo].[Sales].[Store]




參考資料:
1.  Cannot get Linked Servers to work in Sql Azure - Stack Overflow
2.  How to insert a row into a linked server table? - Stack Overflow 
3. [SQL SERVER]如何建立LinkServer連接Oracle | by RiCo 技術農場 | RiCosNote | Medium



留言

這個網誌中的熱門文章

[Note] 公司常見的書信結尾

[C#] 無法載入檔案或組件 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)

[IIS] 拒絕存取路徑 & 開啟資料夾權限