【问题标题】:Loop through DB list setting DB to single user Mode循环通过 DB 列表设置 DB 到单用户模式
【发布时间】:2018-10-12 05:59:37
【问题描述】:

我正在尝试创建一个动态 SQL 语句来将数据库设置为单用户模式,以便稍后我可以对其进行还原。我在一个循环中放置了一个执行 SQL 任务,其中一个参数用于提供下一个数据库的名称以设置为单用户模式。但是,我不确定 Execute SQL 是否可以运行 DML 或仅运行 SQL,并且我不确定它是否可以在循环中动态完成。这是我在 SQL Execute 任务中的代码。

DECALRE @SQLString nvarchar(200)

SET @SQLString = '改变数据库 [' + ? + '] ' + '设置单个用户立即回滚'

执行(@SQLString)

问号是我设置为单用户模式的数据库名称的 OLEDB 占位符。

这是在 SQL2012 上

【问题讨论】:

  • 使用变量 @databasename 创建存储过程,执行 sp 并通过参数嗅探动态传递变量

标签: ssis task execute mode single-user


【解决方案1】:

是的,执行 SQL 任务将允许您执行 ALTER DATABASE 命令以及 DML、DDL 和其他此类语句。听起来您想为此使用 Foreach 循环,并且使用您的问题中的语法进行 OLE DB 连接可以正常工作。正如评论中提到的@Ven,通过将数据库名称作为变量的存储过程来执行此操作将是更可取的方法。

【讨论】:

  • 谢谢你。如果可以避免的话,我宁愿不需要在主数据库上创建存储过程。我会尝试看看为什么我的 DML 不起作用。
  • @user1413844 谢谢,我相信您必须单击我的答案旁边的复选标记才能将其标记为已接受。
猜你喜欢
  • 2016-03-16
  • 1970-01-01
  • 2016-07-18
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多