从奇怪的查询中调查错误

car*_*reo 2 sql-server sql-server-2016

在我的数据库错误日志(在这个答案中生成)中,我看到以下查询的许多实例(每天数百个):

声明@HkeyLocal nvarchar(18)
声明@ServicesRegPath nvarchar(34)
声明@SqlServiceRegPath 系统名
声明@BrowserServiceRegPath 系统名
声明@MSSqlServerRegPath nvarchar(31)
声明@InstanceNamesRegPath nvarchar(59)
声明@InstanceRegPath 系统名
声明@SetupRegPath 系统名
声明@NpRegPath 系统名
声明@TcpRegPath 系统名
声明@RegPathParams 系统名称
声明@FilestreamRegPath 系统名
选择@HkeyLocal=N'HKEY_LOCAL_MACHINE'
-- 基于实例的路径
选择@MSSqlServerRegPath=N'SOFTWARE\Microsoft\MSSQLServer'
选择@InstanceRegPath=@MSSqlServerRegPath + N'\MSSQLServer'
选择@FilestreamRegPath=@InstanceRegPath + N'\Filestream'
选择@SetupRegPath=@MSSqlServerRegPath + N'\Setup'
选择@RegPathParams=@InstanceRegPath+'\Parameters'
-  服务
选择@ServicesRegPath=N'SYSTEM\CurrentControlSet\Services'
选择@SqlServiceRegPath=@ServicesRegPath + N'\MSSQLSERVER'
选择@BrowserServiceRegPath=@ServicesRegPath + N'\SQLBrowser'
-- InstanceId 设置
选择@InstanceNamesRegPath=N'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL'
-  网络设置
选择@NpRegPath=@InstanceRegPath + N'\SuperSocketNetLib\Np'
选择@TcpRegPath=@InstanceRegPath + N'\SuperSocketNetLib\Tcp'
声明@SmoAuditLevel int
exec master.dbo.xp_instance_regread @HkeyLocal, @InstanceRegPath, N'AuditLevel', @SmoAuditLevel OUTPUT
声明 @NumErrorLogs int
exec master.dbo.xp_instance_regread @HkeyLocal、@InstanceRegPath、N'NumErrorLogs'、@NumErrorLogs 输出
声明@SmoLoginMode int
exec master.dbo.xp_instance_regread @HkeyLocal, @InstanceRegPath, N'LoginMode', @SmoLoginMode OUTPUT
声明@SmoMailProfile nvarchar(512)
exec master.dbo.xp_instance_regread @HkeyLocal、@InstanceRegPath、N'MailAccountName'、@SmoMailProfile 输出
声明@BackupDirectory nvarchar(512)
if 1=isnull(cast(SERVERPROPERTY('IsLocalDB') as bit), 0)
选择 @BackupDirectory=cast(SERVERPROPERTY('instancedefaultdatapath') as nvarchar(512))
别的
exec master.dbo.xp_instance_regread @HkeyLocal, @InstanceRegPath, N'BackupDirectory', @BackupDirectory OUTPUT
声明@SmoPerfMonMode int
exec master.dbo.xp_instance_regread @HkeyLocal, @InstanceRegPath, N'Performance', @SmoPerfMonMode OUTPUT
如果@SmoPerfMonMode 为空
开始
设置@SmoPerfMonMode = 1000
结尾
声明 @InstallSqlDataDir nvarchar(512)
exec master.dbo.xp_instance_regread @HkeyLocal, @SetupRegPath, N'SQLDataRoot', @InstallSqlDataDir OUTPUT
声明@MasterPath nvarchar(512)
声明@LogPath nvarchar(512)
声明@ErrorLog nvarchar(512)
声明@ErrorLogPath nvarchar(512)
select @MasterPath=substring(physical_name, 1, len(physical_name) - charindex('\', reverse(physical_name))) from master.sys.database_files where name=N'master'
select @LogPath=substring(physical_name, 1, len(physical_name) - charindex('\', reverse(physical_name))) from master.sys.database_files where name=N'mastlog'
选择@ErrorLog=cast(SERVERPROPERTY(N'errorlogfilename') as nvarchar(512))
选择@ErrorLogPath=substring(@ErrorLog, 1, len(@ErrorLog) - charindex('\', reverse(@ErrorLog)))
声明@SmoRoot nvarchar(512)
exec master.dbo.xp_instance_regread @HkeyLocal, @SetupRegPath, N'SQLPath', @SmoRoot OUTPUT
声明 @ServiceStartMode int
EXEC master.sys.xp_instance_regread @HkeyLocal、@SqlServiceRegPath、N'Start'、@ServiceStartMode OUTPUT
声明@ServiceAccount nvarchar(512)
EXEC master.sys.xp_instance_regread @HkeyLocal、@SqlServiceRegPath、N'ObjectName'、@ServiceAccount OUTPUT
声明@NamedPipesEnabled int
exec master.dbo.xp_instance_regread @HkeyLocal, @NpRegPath, N'Enabled', @NamedPipesEnabled OUTPUT
声明@TcpEnabled int
EXEC master.sys.xp_instance_regread @HkeyLocal, @TcpRegPath, N'Enabled', @TcpEnabled OUTPUT
声明@InstallSharedDirectory nvarchar(512)
EXEC master.sys.xp_instance_regread @HkeyLocal、@SetupRegPath、N'SQLPath'、@InstallSharedDirectory OUTPUT
声明@SqlGroup nvarchar(512)
exec master.dbo.xp_instance_regread @HkeyLocal, @SetupRegPath, N'SQLGroup', @SqlGroup OUTPUT
声明@FilestreamLevel int
exec master.dbo.xp_instance_regread @HkeyLocal, @FilestreamRegPath, N'EnableLevel', @FilestreamLevel OUTPUT
声明@FilestreamShareName nvarchar(512)
exec master.dbo.xp_instance_regread @HkeyLocal, @FilestreamRegPath, N'ShareName', @FilestreamShareName OUTPUT
声明@cluster_name nvarchar(128)
声明@quorum_type tinyint
声明@quorum_state tinyint
开始尝试
SELECT @cluster_name = cluster_name,
@quorum_type = quorum_type,
@quorum_state = quorum_state
从 sys.dm_hadr_cluster
结束尝试
开始捕捉
-- 使用包含的身份验证连接查询此 DMV 会引发错误 15562(模块不受信任)
--因为服务器缺乏可信度。这是意料之中的,所以我们只是离开
--values 作为默认值
IF(ERROR_NUMBER() 不在 (297,300, 15562))
开始
扔
结尾
收尾
SELECT @SmoAuditLevel AS [AuditLevel], ISNULL(@NumErrorLogs, -1) AS [NumberOfLogFiles], (case when @SmoLoginMode 'A' then 1 else 0 end AS bit) AS [IsCaseSensitive], @@MAX_PRECISION AS [MaxPrecision], CAST(FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') AS bit) AS [IsFullTextInstalled], SERVERPROPERTY(N'ProductVersion') AS [VersionString], CAST(SERVERPROPERTY(N'Edition') AS sysname) AS [Edition], CAST(SERVERPROPERTY(N) 'ProductLevel') AS sysname) AS [ProductLevel], CAST(SERVERPROPERTY('IsSingleUser') AS bit) AS [IsSingleUser], CAST(SERVERPROPERTY('EngineEdition') AS int) AS [EngineEdition], convert(sysname, serverproperty( N'collat​​ion')) AS [Collat​​ion], CAST(SERVERPROPERTY('IsClustered') AS bit) AS [IsClustered], CAST(SERVERPROPERTY(N'MachineName')) AS sysname) AS [NetName]、@LogPath AS [MasterDBLogPath]、@MasterPath AS [MasterDBPath]、SERVERPROPERTY('instancedefaultdatapath') AS [DefaultFile]、SERVERPROPERTY('instancedefaultlogpath') AS [DefaultLog]、SERVERPROPERTY(N'ResourceVersion) ') AS [ResourceVersionString], SERVERPROPERTY(N'ResourceLastUpdateDateTime') AS [ResourceLastUpdateDateTime], SERVERPROPERTY(N'Collat​​ionID') AS [Collat​​ionID], SERVERPROPERTY(N'ComparisonStyle') AS [ComparisonStyle], SERVERPROPERTY(N'SqlCharSet') AS [SqlCharSet], SERVERPROPERTY(N'SqlCharSetName') AS [SqlCharSetName], SERVERPROPERTY(N'SqlSortOrder') AS [SqlSortOrder], SERVERPROPERTY(N'SqlSortOrderName') AS [SqlSortOrderName], SERVERPROPERTY(N'ComputerName AS[SqlSortOrder]) ComputerNamePhysicalNetBIOS], SERVERPROPERTY(N'BuildClrVersion') AS [BuildClrVersionString], @ServiceStartMode AS [ServiceStartMode], ISNULL(@ServiceAccount,N'') AS [ServiceAccount], CAST(@NamedPipesEnabled AS bit) AS [NamedPipesEnabled], CAST(@TcpEnabled AS bit) AS [ TcpEnabled], ISNULL(@InstallSharedDirectory,N'') AS [InstallSharedDirectory], ISNULL(suser_sname(sid_binary(ISNULL(@SqlGroup,N''))),N'') AS [SqlDomainGroup], case when 1=msdb. dbo.fn_syspolicy_is_automation_enabled() 并存在(select * from msdb.dbo.syspolicy_system_health_state where target_query_expression_with_id like 'Server%' )然后 1 else 0 end AS [PolicyHealthState], @FilestreamLevel AS [FilestreamLevel], ISNULL(@Filestream')ShareName,N' AS [FilestreamShareName], -1 AS [TapeLoadWaitTime], CAST(SERVERPROPERTY(N'IsHadrEnabled') AS bit) AS [IsHadrEnabled],SERVERPROPERTY(N'HADRManagerStatus') AS [HadrManagerStatus], ISNULL(@cluster_name, '') AS [ClusterName], ISNULL(@quorum_type, 4) AS [ClusterQuorumType], ISNULL(@quorum_state, 3) AS [ClusterQuorumState], SUSER_SID (@ServiceAccount, 0) AS [ServiceAccountSid], CAST(SERVERPROPERTY('IsPolyBaseInstalled') AS bit) AS [IsPolyBaseInstalled], N'Windows' AS [HostPlatform], CAST(
服务器属性(N'服务器名')
AS 系统名称) AS [名称], CAST(
ISNULL(serverproperty(N'instancename'),N'')
AS sysname) AS [InstanceName], CAST(0x0001 AS int) AS [Status], N'\' AS [PathSeparator], 0 AS [IsContainedAuthentication], CAST(null AS int) AS [ServerType]
删除表#SVer

这些命令来自我的计算机 (DBA) 和开发人员的。对于开发者,它给出了几个权限错误:

对象“server”、数据库“master”上的 VIEW SERVER STATE 权限被拒绝。服务器主体“MYDOMAIN\john.doe”在当前安全上下文下无法访问数据库“model”。
用户“MYDOMAIN\john.doe”登录失败。原因:无法打开明确指定的数据库 'MODEL'。[客户:10.90.90.10]
用户“MYDOMAIN\john.doe”登录失败。

对我来说,它给出了这个错误:

无法删除表“#SVer”,因为它不存在或您没有权限。

我不知道是什么应用程序导致了这些查询,因此不知道这些烦人的错误。通过查看查询,您有什么想法吗?我能做些什么来调查?

Joh*_*ner 5

这是当您单击instance name->时运行的查询 SSMS properties。要确认使用 TSQL 模板启动快速SQL Profiler 跟踪,过滤到您的登录名,然后右键单击服务器名称并选择properties,您应该会在跟踪中看到相同的查询滚过。它的细节在 SSMS 版本之间有所不同,但它们几乎都坚持相同的基本查询。

这个#Sver错误很有趣,但不是一个值得关注的关键问题。您是否安装了与 SSMS 集成的任何 3rd 方工具?也许这些也是原因的一部分。