Azure-Sql-Database

從沒有連結的單個 Azure DB 表中刪除記錄 - 對數據庫和/或伺服器名稱的引用 .. 不支持

  • April 14, 2017

環境

  1. Azure SQL 數據庫(從 SQL Server 遷移而來)
  2. 原來的舊數據庫(15 年以上)
  3. 處理單個表(試圖刪除記錄)
  4. 使用管理員使用者
  5. 使用 SSMS 2014
  6. 表上有一些觸發器(禁用它們不會產生錯誤變化)
  7. 數據庫名稱databasename在我們的範例中
  8. 有一個 azure blob 儲存,其中儲存文件並由應用程序通過所述tblImages表中的記錄“引用” - 但我看不到兩者之間的任何硬連結(這甚至可能嗎?)

我可以在此表中選擇、插入和更新記錄,但不能刪除。

失敗的腳本

delete from
[databasename].[dbo].[tblImages]
where companyid = 123

錯誤:

消息 40515,級別 15,狀態 1,第 91 行對“Azure.dbo.tblImages”中的數據庫和/或伺服器名稱的引用在此版本的 SQL Server 中不受支持。

但是誰說過“ Azure .dbo.tblImages”?!?

我嘗試過的事情

  • 已嘗試完全限定表名,而不是 - 沒有變化。
  • 嘗試使用“編輯前 200”功能刪除記錄,同樣的錯誤
  • 嘗試禁用表上的所有觸發器,沒有變化
  • 嘗試了腳本“創建到新視窗”,但沒有關於連結數據庫/伺服器或其他表約束

這是一個在完全相同的環境下成功的簡單測試:

CREATE TABLE _tmpPersons (
   PersonID int,
   LastName varchar(255),
   FirstName varchar(255),
   Address varchar(255),
   City varchar(255) 
);

INSERT INTO _tmpPersons ( PersonID , LastName , FirstName , Address , City )
VALUES (123, 'Tore', 'Tess', '123 Main St.', 'Nowheresville');

select * from _tmpPersons;

delete from _tmpPersons where PersonId = 123;

select * from _tmpPersons;

我已經嘗試過完全合格[database].[schema].[table]的和不同的組合。

它絕對是一個表,並且有觸發器,但禁用它們不會改變任何事情。

從以下位置找到零個結果:

SELECT OBJECT_NAME(referencing_id), referenced_database_name
FROM sys.sql_expression_dependencies 
WHERE referenced_database_name IS NOT NULL;

來自 MSDN 論壇的 David 讓我走上了正軌;錯誤消息是正確的,您只需要找出引用的位置。

  1. 查看有哪些 CASCADE DELETE FK 約束
  2. 檢查其他表
  3. 請參閱 FROM 子句中具有 3 部分名稱的表上的觸發器
  4. 正確為 2 部分名稱
  5. 舞蹈

要查看是否存在帶有 DELETE CASCADE 的 FK 關係:

select * from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS where DELETE_RULE ='CASCADE'

更改您的查詢

delete from
[databasename].[dbo].[tblImages]
where companyid = 123

delete from
[dbo].[tblImages]
where companyid = 123

引用自:https://dba.stackexchange.com/questions/170828