我正在尝试使用OPENROWSET从上传到Azure存储的文件中将数据导入Azure SqlServer 我基本上在这里执行与Microsoft给出的示例相同的流程:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'Azure Storage URL',
CREDENTIAL = ElasticDBQueryCred
);
由于我的密码仅在1天内设置为有效,因此每次运行批处理时,我都会尝试删除并重新创建从ETERNAL DATA SOURCE到MASTER KEY的所有内容
一切似乎都运行良好,直到突然无法通过错误删除我创建的EXTERNAL DATA SOURCE之一:
由于正在使用外部数据源'xxx',因此无法删除它。
这也导致我的CREDENTIAL卡住了,因为在删除CREDENTIAL之前,我必须先删除EXTERNAL DATA SOURCE。
我认为这可能是Azure SQLServer的错误。知道如何正确删除此代码并防止将来发生此错误吗?
我可以不使用挂起的资源来创建新的导入资源,但这是一个好习惯吗?
这里也提到了错误:https://social.msdn.microsoft.com/Forums/office/en-US/6e255ed0-21ad-4a52-b3b4-03fe94e05820/azure-sql-i-cant-drop-external-blobstorage-data-source-though-sysexternaltables-is-empty?forum=ssdsgetstarted 但是,重新缩放数据库或每次发生错误时都重新创建它可能不是一个好主意。
编辑:我仍然没有找到解决该问题的方法。但是对于我来说, 外部数据源 由于格式文件(定义导入文件格式的一个错误)而挂起(我也将其存储在其中Azure存储)是我在实施新功能时所做的。即使当我最终使FORMAT文件正常工作时,挂起的 外部数据源 仍然存在并且不能删除。