在 SQL Azure 中删除多个数据库
我想在使用完 SQL Azure 后立即运行一个脚本来删除多个数据库。当我尝试如下操作时,
DECLARE @dbname varchar(100);
DECLARE @stmt nvarchar(3000);
SET @dbname = '6A732E0B';
SELECT @stmt = (SELECT 'DROP DATABASE [' + name + ']; ' FROM sys.databases
WHERE name LIKE '%' +@dbname +'%');
EXEC sp_executesql @stmt;
SQL Azure 抛出错误消息:“DROP DATABASE 语句必须是批处理中的唯一语句” 有人可以帮我解决这个问题吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是 SQL Azure 中的一个已知限制 - 某些语句需要单独成批才能执行。这包括创建/更改数据库、更改数据库等等。
为了解决您的问题,您可以在应用程序中创建一个循环,在其中迭代所有数据库并通过在单独的批次中发出 DROP DATABASE 语句来删除它们。
This is a known limitation in SQL Azure - certain statements need to be in a batch by themselves to be executed. This includes CREATE/ALTER DATABASE, ALTER DATABASE and a few more.
To solve you problem, you can create a loop in you application where you iterate over all the databases and drop them by issuing DROP DATABASE statements in separate batches.
我相信这是 SQL Azure 的一个错误。我最近向微软报告了这个问题:
https://connect.microsoft.com/SQLServer/feedback/details/684160/sp-executesql-the-drop-database-statement-must-be-the-only-statement-in-the-批次
I believe this is a bug of SQL Azure. I've recently reported it to Microsoft:
https://connect.microsoft.com/SQLServer/feedback/details/684160/sp-executesql-the-drop-database-statement-must-be-the-only-statement-in-the-batch