Sql server 撇号,与EXEC一起处理

Sql server 撇号,与EXEC一起处理,sql-server,Sql Server,我需要将以下SQL作为exec语句的一部分运行。不过,我要做的是把撇号弄对。如果我只使用1个撇号来运行语句,那么该语句的执行效果很好,我认为如果使用2个撇号,就可以让它正常工作 有什么想法吗 exec (' SELECT COALESCE(NULLIF(CAST((DATEDIFF(mi,sqlserver_start_time,GetDate())/1440 ) as varchar),''0'') + '' day(s), '','''') + COALESCE(NULLIF(CAST(((

我需要将以下SQL作为exec语句的一部分运行。不过,我要做的是把撇号弄对。如果我只使用1个撇号来运行语句,那么该语句的执行效果很好,我认为如果使用2个撇号,就可以让它正常工作

有什么想法吗

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   
')

您发布的查询中有几个错误。试一试

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,
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   
FROM sys.dm_os_sys_info as Uptime')
EXEC('SELECT COALESCE(NULLIF(CAST((DATEDIFF(mi,sqlserver\u start\u time,GetDate())/1440)作为varchar),'0'+'day','
+合并(NULLIF(强制转换((DATEDIFF(mi,sqlserver\u start\u time,GetDate())%1440)/60)为varchar),“0”)+“小时”,“时间”
+将((DATEDIFF(mi,sqlserver_start_time,GetDate())%60)转换为varchar)+“min”转换为正常运行时间,

CAST(左((右(@@version,LEN(@@version)-3-charindex(“”“”,ON“”,@@version)),charindex(“”)打印您试图执行的语句并手动对其进行可视化扫描可能会对您有所帮助。例如,当我这样做时,它可以让我很容易地看到第5行的错误:
FROM sys.dm_os_sys_info)作为正常运行时间,
在这里的语法不正确。我认为查询的最开始应该是
SELECT(SELECT
,而您在这里省略了第二个“SELECT”。如果您调整它,您的查询运行良好。
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,
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   
FROM sys.dm_os_sys_info as Uptime')