无法删除数据库 SQL Server 通过命令行的可执行文件

运行可执行命令行文件时,任务之一 - 删除数据库。 它开始时, SQL Server 告诉我

'DBName' does not exist or you do not have permission

. 确认数据库存在。 在脚本的此阶段,它已经被转换为脱机模式并转换为单个用户模式 (要确保在删除之前没有活动连接). 为什么程序无法重置数据库?

编辑:与我工作的用户可以手动删除数据库 SQL Server Management Studio.

我运行的可执行命令行文件实际上是一个编译的程序 C #, 哪个表演

DROP DATABASE

操作员 SQL 穿过 System.Data.SqlClient.SqlConnection. 它连接到K. SQL Server 使用相同的凭据 (localhost 随着内置安全性), 它用于通过图形界面连接。

实际执行 SQL (复制 / 盒B. SQL Server 供测试用):

IF EXISTS (SELECT name FROM sys.databases WHERE name = N'DBName') DROP DATABASE DBName

编辑 2: 这个程序适用于我的车。 (tm), 但不在远程服务器上需要启动。
已邀请:

知食

赞同来自:

监控进程 (www.sysinternals.com) 您将告诉您文件级别有问题是否存在问题,以及可执行命令行文件是否真正适用于您所期望的用户。

尽管如此,请尝试连接字符串 sql auth 和....相比 Windows auth, 您使用的。 如果与权限连接,它可以帮助您缩小权限的问题。

小姐请别说爱

赞同来自:

我假设将其转移到单用户制度 (或离线翻译) 导致事实 System.Data.SqlClient.SQLConnection 失去头脑。

此,我假设执行此操作员时,您的连接已安装主数据库?

您也可以尝试以下内容以手动杀死连接 (注意它可以 / 会导致混乱 - 但是因为你仍然摧毁了数据库 ... 我相信这些条件并不重要).

USE master
GO


DECLARE killer CURSOR LOCAL FAST_FORWARD FOR
SELECT
spid
FROM
dbo.sysprocesses
WHERE
dbid = DB_ID('dbname here')

DECLARE @spid int
DECLARE @sql nvarchar(20)

OPEN killer

FETCH NEXT FROM killer INTO @spid
WHILE @@FETCH_STATUS = 0 BEGIN

SET @sql = N'KILL ' + CAST(@spid as nvarchar(5))

EXEC sp_executesql @sql

FETCH NEXT FROM killer INTO @spid
END

CLOSE killer
DEALLOCATE killer
GO

WAITFOR DELAY '00:00:00.500'

要回复问题请先登录注册