2 回答
TA贡献1818条经验 获得超11个赞
使用Sql server Management Studio连接以下服务器(LocalDb)\MSSQLLocalDB
然后使用以下语句确定哪些数据库是 localDb:
SELECT * FROM sys.databases
在此更正以下 detach localdb 语句以仅分离 localdbs 之后:
DECLARE @rowCount INT = 1
DECLARE @databaseName NVARCHAR(MAX)
WHILE @rowCount = 1
BEGIN
SET @databaseName = null
SELECT TOP(1)
@databaseName = name
FROM sys.databases
WHERE database_id >= 5
SET @rowCount = @@ROWCOUNT
IF @rowCount = 1
BEGIN
exec sp_detach_db @databaseName
END
END
就我而言,database_id 4 以上的所有内容似乎都是 localdbs,但这对您来说可能有所不同。
TA贡献1770条经验 获得超3个赞
情况似乎更糟。
正在使用的 localdb 实例来自我的 NCrunch 节点。以 SYSTEM 用户身份运行。
因此,从具有管理员权限的 PowerShell 提示符运行
choco install pstools
进而
psexec -i -s CMD
获取以 SYSTEM 身份运行的命令提示符
那里的 sqllocaldb.exe 也不太走运,但粘贴 SQL Management Studio 的完整路径确实做到了:
"C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Ssms.exe"
连接到服务器 (LocalDb)\MSSQLLocalDB
然后我按照安德斯的方法连接到(LocalDb)\MSSQLLocalDB,然后我做了
DECLARE @rowCount INT = 1
DECLARE @databaseName NVARCHAR(MAX)
WHILE @rowCount = 1
BEGIN
SET @databaseName = null
SELECT TOP(1)
@databaseName = name
FROM sys.databases
WHERE database_id >= 7
SET @rowCount = @@ROWCOUNT
IF @rowCount = 1
BEGIN
exec sp_detach_db @databaseName
exec sp_dbremove @databaseName
END
END
在sp_dbremove已被弃用,但得到这里完成任务。现在甚至删除了 .mdf 和 _log.ldf 文件。
之后 dbs 的数量从 32765 减少到 6,当这样计算时:
SELECT COUNT(1) FROM sys.databases
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报