首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过SQSH降低DB

通过SQSH降低DB
EN

Database Administration用户
提问于 2020-03-25 13:39:13
回答 1查看 106关注 0票数 0

我想使用SQSH删除一个远程sql服务器DB。我试过两种方法;

第一种方法是在自动更改关闭的情况下将DB设置为脱机。

代码语言:javascript
复制
sqsh -h -S databaseHost -D master -U USER -P PASS -C "ALTER DATABASE ${TARGETDB} set OFFLINE WITH ROLLBACK IMMEDIATE; DROP DATABASE ${TARGETDB}"

这一结果

代码语言:javascript
复制
Error: 615, Severity: 21, State: 1. Could not find database ID 9356, name '9356'

第二条路

代码语言:javascript
复制
sqsh -h -S databaseHost -D master -U USER -P PASS -C  "ALTER DATABASE ${TARGETDB} set SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE ; DROP DATABASE ${TARGETDB}"

这很好,但是如果没有其他人正在连接/尝试连接到DB,则会导致

代码语言:javascript
复制
The database is in single-user mode, and a user is currently connected to it. 

第二种方法应该很好,因为我将它设置为单个用户,并将它放在同一个连接中,或者它应该是相同的连接,知道如何解决这个问题吗?

EN

回答 1

Database Administration用户

发布于 2020-03-25 13:54:21

您尝试DROP ..数据库的方式有多个问题。

  1. SQSH命令提示符似乎无法删除脱机数据库。
  2. 当设置为SINGLE_USER时,任何用户都可以使用数据库。您可能在将数据库切换到SINGLE_USER模式和删除数据库之间连接到数据库。或者SQSH命令提示符在数据库上有一个句柄。

要克服这些问题,您可能需要执行以下操作:

  1. 设置离线数据库。
  2. 在线设置数据库。
  3. 将数据库设置为受限用户模式。
  4. 删除数据库。

总之,如下所示:

代码语言:javascript
复制
ALTER DATABASE  SET OFFLINE WITH ROLBACK IMMEDIATE
GO
ALTER DATABASE  SET ONLINE
GO
ALTER DATABASE  SET RESTRICTED_USER
GO
DROP DATABASE  
GO

现在,sqsh取代了Sybase的isql命令提示符可执行文件。因此,可能有一些原因可以解释为什么这将不适用于Server (正如您的标记所建议的)。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/262664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档