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