当前位置: 首页 > 知识库问答 >
问题:

基于SQL Server版本运行不同的liquibase脚本

司马庆
2023-03-14

我试图使用liquibase向角色添加成员,但SQL与SQL Server2008到2012不同。

SQL Server 2008:

exec sp_addrolemember db_datareader, MYUSER 
ALTER ROLE db_datawriter ADD MEMBER MYUSER
DECLARE @ver nvarchar(50),
        @intVer int,
        @ver2008 int = 10

SET @ver = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @intVer = CAST(SUBSTRING(@ver, 1, CHARINDEX('.', @ver) - 1) AS int)

IF (@intVer = @ver2008)
    exec sp_addrolemember db_datawriter, MYUSER
ELSE
    ALTER ROLE db_datawriter ADD MEMBER MYUSER;

我需要脚本能够找出它正在使用的SQL Server的哪个版本,并且只运行特定的liquibase脚本,无论是changeset还是ChangeLog。

共有1个答案

岳硕
2023-03-14

如果无法识别语法,整个批处理的编译将失败。您可以通过在EXECUTE中包装语句或使用sp_executesql来解决这个问题。

IF (@intVer = @ver2008)
    EXECUTE(N'exec sp_addrolemember db_datawriter, MYUSER;')
ELSE
    EXECUTE(N'ALTER ROLE db_datawriter ADD MEMBER MYUSER;');
 类似资料:
  • 首先也是最重要的是,我对Java知之甚少,对SWT更是知之甚少,所以我就到此为止。今天早些时候,我试着运行我在上找到的这个简单程序https://mkyong.com/swt/swt-hello-world-example 以下是代码: 当我运行它时,会出现以下错误: 我从中了解到的是,SWT正在用Java11编译,而它应该用Java8编译,但是——这是一个很大的BUT——我没有Java11我删除

  • 我的应用程序在两个jboss版本jboss 4和jboss 7之间扩展。Jboss 4 intance正在通过eclipse运行。当我尝试通过[Jboss_HOME]/bin/standalone.bat运行Jboss 7时,它不会启动,并显示以下错误。 调用"C:\jboss as-7.1.1。最终\bin\standalone.conf.bat"警告JBOSS_HOME可能指向不同的安装-可能

  • 我将环境变量设置为。 在这个目录下,我有一个名为bin的文件夹,它包含一个脚本。如何使用system变量从PowerShell中的任何地方运行此脚本? 我尝试过以下方法,但没有成功:

  • 我们使用的是Liquibase 3.6.3版本 我们正在使用SQL服务器数据库上的liquibase运行SQL升级脚本,使用liquibase.bat(我们作为安装的一部分获得),如下所示。这是按预期工作的。 命令: liquibase.bat--ChangeLogFile=...\MasterChangelog.xml--驱动程序==com.microsoft.sqlserver.jdbc.SQ

  • 我想知道我是否可以执行一个基于SQS消息的脚本。 我的要求是,当我在SQS中收到队列消息时,在EC2中执行脚本。 谢谢和问候,Srivignesh KN

  • 问题内容: 如何配置Windows命令对话框以在其中运行不同的python版本?例如,当我键入时,它运行python 2.7,而当我键入时,它运行python 3.3?我知道如何为一个版本而不是两个版本配置环境变量?我的意思是类似Linux终端的东西。 问题答案: Python的3.3主要介绍Python启动的Windows是安装到作为和安装程序。安装程序还会创建与和的关联。然后添加或作为第一行。