0
我有以下需要作为exec语句的一部分运行的SQL。我正在努力的是让撇号正确。如果我只用1个撇号运行它,那么该语句就可以正常运行,并且我认为有2个可以将它转义出来,从而允许它工作。撇号,使用EXEC处理
任何想法?
exec
('
SELECT COALESCE(NULLIF(CAST((DATEDIFF(mi,sqlserver_start_time,GetDate())/1440) as varchar),''0'') + '' day(s), '','''')
+ COALESCE(NULLIF(CAST(((DATEDIFF(mi,sqlserver_start_time,GetDate())%1440)/60) as varchar),''0'') + '' hour(s), '','''')
+ CAST((DATEDIFF(mi,sqlserver_start_time,GetDate())%60) as varchar) + ''min'' as Uptime
FROM sys.dm_os_sys_info) as Uptime,
CAST(LEFT((RIGHT(@@version, LEN(@@version)- 3 -charindex ('' ON '',@@VERSION))),CHARINDEX(''<'',(RIGHT(@@version, LEN(@@version)- 3 -charindex ('' ON '',@@VERSION))),0)-2) as nvarchar(300)) as OS,
cast(serverproperty(''MachineName'') as nvarchar(255)) MachineName,
cast(serverproperty(''ServerName'') as nvarchar(255)) ServerInstanceName,
cast(LEFT(@@VERSION,CHARINDEX(''('',@@VERSION,0)-2) as nvarchar(300)) as Version,
cast(replace(cast(serverproperty(''Edition'')as varchar),''Edition'','''') as varchar(max)) Edition,
cast(serverproperty(''productVersion'') as nvarchar(255)) ProductBuildLevel,
cast(serverproperty(''productLevel'') as nvarchar(255)) SPLevel,
cast(serverproperty(''Collation'') as nvarchar(255)) CollationType,
cast(serverproperty(''IsClustered'') as nvarchar(255)) [IsClustered],
cast((select physical_memory_kb/1024 FROM sys.dm_os_sys_info) as int) AS PhysicalMemory,
cast((select value from sys.configurations where name = ''min server memory (MB)'') as int) as MinMemory,
cast((select value from sys.configurations where name = ''max server memory (MB)'') as int) as MaxMemory,
cast((select cpu_count FROM sys.dm_os_sys_info) as int) AS LogicalCPUCount,
cast((select hyperthread_ratio FROM sys.dm_os_sys_info) as int) AS HyperthreadRatio,
cast((select cpu_count/hyperthread_ratio FROM sys.dm_os_sys_info) as int) AS PhysicalCPUCount
')
我得到的错误是:
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ')'.
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'as'.
Msg 156, Level 15, State 1, Line 16
Incorrect syntax near the keyword 'as'.
Msg 156, Level 15, State 1, Line 17
Incorrect syntax near the keyword 'as'.
Msg 156, Level 15, State 1, Line 18
Incorrect syntax near the keyword 'as'.
Msg 156, Level 15, State 1, Line 19
Incorrect syntax near the keyword 'as'.
Msg 156, Level 15, State 1, Line 20
Incorrect syntax near the keyword 'as'.
它可能会帮助您打印您尝试执行的语句并手动对其执行可视化扫描。例如,当我这样做时,它可以让我很容易地看到第5行的错误:'FROM sys.dm_os_sys_info)Uptime,'在这里语法不正确。我相信你的查询的开始应该是'SELECT(SELECT'),你在这里省略了第二个“select”。如果你调整了它,你的查询运行良好。 – ZLK