none
如何获取sql server的主版本号 RRS feed

  • 问题

  • SELECT SERVERPROPERTY('PRODUCTVERSION')


    9.00.5000.00

    DOS命令行下,如何获取到前面的主版本号9呢

    这个可以结贴了,是我没把环境说清楚。我要判断人家安装的sql版本,没法去建立这些,已通过DOS命令解决

    2013年12月6日 10:57

答案

  • sqlcmd是吧

    在master数据库创建一个表值函数

    然后进行切割

    -------------------------------------------------
    --实现split功能 的函数
    --date :2005-4-20
    --Author :Domino
    ---------------------------------------------------
    DROP FUNCTION [dbo].[f_split]
    GO
    USE master
    GO
    CREATE FUNCTION f_split
    (
      @SourceSql VARCHAR(8000) ,
      @StrSeprate VARCHAR(10)
    )
    RETURNS @temp TABLE ( str VARCHAR(100) )
    AS
        BEGIN
            DECLARE @i INT
            SET @SourceSql = RTRIM(LTRIM(@SourceSql))
            SET @i = CHARINDEX(@StrSeprate, @SourceSql)
            WHILE @i >= 1
                BEGIN
                    INSERT  @temp
                    VALUES  ( LEFT(@SourceSql, @i - 1) )
                    SET @SourceSql = SUBSTRING(@SourceSql, @i + 1,
                                               LEN(@SourceSql) - @i)
                    SET @i = CHARINDEX(@StrSeprate, @SourceSql)
                END
            IF @SourceSql <> '\'
                INSERT  @temp
                VALUES  ( @SourceSql )
            RETURN
        END
    --实验:
    USE tempdb
    go
    DECLARE @versionnum NVARCHAR(20)
    SELECT SERVERPROPERTY('PRODUCTVERSION')
    SELECT  @versionnum=CONVERT(NVARCHAR(20),SERVERPROPERTY('PRODUCTVERSION')) 
    SELECT TOP 1 * FROM   master.dbo.[f_split](@versionnum,'.')
    

    2013年12月6日 15:48
  • 要注意的是,SQL 2008 R2的版本号是10.50

    想不想时已是想,不如不想都不想。

    2013年12月8日 2:09
    版主

全部回复

  • select @@version
    2013年12月6日 14:10
  • sqlcmd是吧

    在master数据库创建一个表值函数

    然后进行切割

    -------------------------------------------------
    --实现split功能 的函数
    --date :2005-4-20
    --Author :Domino
    ---------------------------------------------------
    DROP FUNCTION [dbo].[f_split]
    GO
    USE master
    GO
    CREATE FUNCTION f_split
    (
      @SourceSql VARCHAR(8000) ,
      @StrSeprate VARCHAR(10)
    )
    RETURNS @temp TABLE ( str VARCHAR(100) )
    AS
        BEGIN
            DECLARE @i INT
            SET @SourceSql = RTRIM(LTRIM(@SourceSql))
            SET @i = CHARINDEX(@StrSeprate, @SourceSql)
            WHILE @i >= 1
                BEGIN
                    INSERT  @temp
                    VALUES  ( LEFT(@SourceSql, @i - 1) )
                    SET @SourceSql = SUBSTRING(@SourceSql, @i + 1,
                                               LEN(@SourceSql) - @i)
                    SET @i = CHARINDEX(@StrSeprate, @SourceSql)
                END
            IF @SourceSql <> '\'
                INSERT  @temp
                VALUES  ( @SourceSql )
            RETURN
        END
    --实验:
    USE tempdb
    go
    DECLARE @versionnum NVARCHAR(20)
    SELECT SERVERPROPERTY('PRODUCTVERSION')
    SELECT  @versionnum=CONVERT(NVARCHAR(20),SERVERPROPERTY('PRODUCTVERSION')) 
    SELECT TOP 1 * FROM   master.dbo.[f_split](@versionnum,'.')
    

    2013年12月6日 15:48
  • 要注意的是,SQL 2008 R2的版本号是10.50

    想不想时已是想,不如不想都不想。

    2013年12月8日 2:09
    版主
  • 要注意的是,SQL 2008 R2的版本号是10.50

    想不想时已是想,不如不想都不想。

    谢谢怡红公子大侠提醒
    2013年12月8日 3:02
  • 顺便说一下,我常用

    SELECT @@microsoftversion / 0x01000000


    想不想时已是想,不如不想都不想。

    2013年12月9日 12:25
    版主
  • 这个办法真牛屄,只不过我用别的办法解决了

    在dos中判断osql如能正确执行,则是05之前的版本(这个sql2000带,更之前的就没管了)

    2013年12月19日 10:24
  • Sql2012 comes with osql too.
    2013年12月19日 14:44
  • 是的,SQL2012也有OSQL工具

    路径:sql安装所在盘符:\Program Files\Microsoft SQL Server\110\Tools\Binn

    2013年12月19日 14:54
  • 向各位致歉。我错把isql写成了osql,isql才是05前有的
    2014年1月3日 7:06