Sql-Server
無法在 Azure SQL 數據庫中創建 SP
我正在嘗試在我的 Azure SQL 數據庫上創建一個儲存過程,該過程已連接到 Azure SQL 數據庫中的其他數據庫表。
創建儲存過程時出現以下錯誤:
消息 40515,級別 15,狀態 1,過程 sp_select,第 16 行
$$ Batch Start Line 0 $$此版本的 SQL Server 不支持對“database.dbo.table”中的數據庫和/或伺服器名稱的引用。
我知道我們可以通過 Elastic Database Query 進行跨數據庫查詢,但是如何為其創建儲存過程呢?
Azure SQL DB 不允許在查詢中使用即席 3 部分名稱 (database.schema.table)。
Azure SQL DB 託管實例可以 - 但這是不同的產品。如果您有很多現有的儲存過程(例如數百個)引用不同數據庫中的很多現有對象(例如數千個),那麼遷移到託管實例可能比我將要描述的更容易。
要在 Azure SQL DB 中執行跨數據庫查詢,然後在要執行查詢的每個數據庫中,您需要:
- 創建一個外部數據源——有點像連結伺服器
- 創建一個外部表 - 這有點像一個指向您要查詢的表的視圖,通過外部數據源
說明相當簡單,但這是痛苦的部分:您必須為每個要查詢的數據庫、每個要查詢的表/視圖/等執行此操作。另外,如果表發生變化(例如添加新列或數據類型更改),那麼您必須返回並重新訪問指向它的所有外部表引用,並更改它們的結構。
這是 Azure SQL DB 中“技術上可行”的事情之一,但實際上只適用於從頭開始的新應用程序,而不是將現有應用程序遷移到雲。就像我說的 - 如果您有很多這樣的查詢引用了很多對象,那麼現在您了解為什麼託管實例可能更適合您。