Windows Azure SQL Database (SQL Azure) 的使用上是非常方便的,不但有 GUI 介面的管理工具可用,資料存取的相容性也非常好,使用 ADO.NET 就能連到 SQL Database,而在移轉資料庫的時候,我們還有 SSMS/SSIS 或 SQL Azure Migration Wizard 等工具可用,今天我們用一個 DBA 很常轉移資料的方式-連結伺服器 (Linked Server) 來移轉資料。
首先,我們先在 ODBC 資料來源中設定:
設定方式也不難,首先,在伺服器名稱中輸入 SQL Database 的 Server 名稱:
然後設定使用者帳戶,規則要依 SQL Database 的規則設定,否則會無法連線:
接著設定預設資料庫,建議不要指向master,而是指向要用的資料庫:
接著接受預設值:
最後,測試一下連線可成功即可:
設定完畢後,回到 SSMS,使用下列兩個指令加入連結伺服器:
01 |
EXEC master.dbo.sp_addlinkedserver |
02 |
@server = N '[ODBC_DATA_SOURCE_NAME]' , |
03 |
@srvproduct=N 'Any' , |
04 |
@provider=N 'MSDASQL' , |
05 |
@datasrc=N 'CloudSQLDB' |
06 |
GO |
07 |
08 |
EXEC master.dbo.sp_addlinkedsrvlogin |
09 |
@rmtsrvname=N '[ODBC_DATA_SOURCE_NAME]' , |
10 |
@useself=N 'False' , |
11 |
@locallogin= NULL , |
12 |
@rmtuser=N '[YOUR_SQL_AZURE_ACCOUNT]' , |
13 |
@rmtpassword= '[YOUR_PASSWORD]' |
14 |
GO |
設定完以後就能用 [link_server_name].[database_name].[owner].[object_name] 來存取 SQL Database 上的資料了。
PS: 據筆者的測試,有些資料型別在用 Linked Server 時會有 metadata 不一致的問題,例如 money 型別,這點可參考 Reference 的方式解決。
Reference:
http://blogs.msdn.com/b/sqlcat/archive/2011/03/08/linked-servers-to-sql-azure.aspx