AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-21924

James Jenkins's questions

Martin Hope
James Jenkins
Asked: 2020-01-01 05:00:11 +0800 CST

不支持关键字:“statslog_on”

  • 1

我正在尝试使用“附加连接参数”通过 SSMS 18.2 连接到 SQL 2017 实例

StatsLog_On=Yes;StatsLogFile=C:\Temp\TestODBC.txt

Using Connection String Keywords with SQL Server Native Client中的文档并不完美,但它强烈暗示它应该可以工作。我从其他来源知道关键字StatsLog_On&StatsLogFile需要一起使用。

当我尝试连接时收到此错误消息

====================================

无法连接到沙盒。

====================================

不支持关键字:“statslog_on”。(系统.数据)


节目地点:

在 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable,String connectionString,Boolean buildChain,Hashtable 同义词,Boolean firstKey)

在 System.Data.Common.DbConnectionOptions..ctor(字符串 connectionString,哈希表同义词,布尔 useOdbcRules)

在 System.Data.SqlClient.SqlConnectionString..ctor(字符串连接字符串)

在 System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions 之前)

在 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey 键,DbConnectionPoolGroupOptions poolOptions,DbConnectionOptions & userConnectionOptions)

在 System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey 键)

在 System.Data.SqlClient.SqlConnection.set_ConnectionString(字符串值)

在 Microsoft.SqlServer.Management.UI.ConnectionDlg.SqlServerType.Microsoft.SqlServer.Management.UI.ConnectionDlg.IServerType.GetConnectionObject(UIConnectionInfo ci)

在 Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci,IServerType 服务器)

在 Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

注意:“Sandbpx”是 SQL 实例的名称

作为现实检查使用Server=sandbox;MultiSubnetFailover=True工作正常

sql-server connectivity
  • 1 个回答
  • 283 Views
Martin Hope
James Jenkins
Asked: 2019-12-31 04:31:45 +0800 CST

SSMS 是否使用 ODBC?

  • 7

我正在运行 SSMS V18.2 并连接到 SQL 2008 - 2019 实例。

我正在研究各种多子网连接方案。我了解到 ODBC 13.1+ 包括TransparentNetworkIPResolution改变与多个子网建立连接的方式。

我的电脑上有几个不同的驱动程序。

5 种不同驱动程序的屏幕截图

我想知道这些 SSMS 中的哪些(如果有)用于直接连接到我网络中的 SQL 实例。

我查看了工具 > 选项,但没有看到任何可以让我选择更改用于连接的驱动程序的内容。

当我使用 Google 搜索时,我得到了有关使用 ODBC 进行链接服务器的结果。

SSMS 是否使用 ODBC 进行直接连接?

如果是这样,我可以选择使用哪一个吗?

编辑有一条评论和一个答案表明 SSMS 不使用 ODBC,根据我的持续研究,我认为它SQL Server Native Client 11.0在上面的屏幕截图中使用。

查看Using Connection String Keywords with SQL Server Native Client似乎您可以使用关键字连接您选择的驱动程序,Driver我仍在研究这可能如何工作。

Edit2实际上看起来(见相关) 驱动程序不是屏幕截图中的驱动程序之一,也不能使用关键字driver更改驱动程序。

sql-server ssms
  • 1 个回答
  • 5034 Views
Martin Hope
James Jenkins
Asked: 2019-12-24 08:02:57 +0800 CST

在连接时记录 MultiSubnetFailover 值?

  • 3

使用 AlwaysOn,关键字有 3 个选项MultiSubnetFailover

  • 对(是)
  • 错误(否)(示例)
  • 未发送/未使用

并非所有应用程序都支持在连接字符串中使用它。并非所有供应商联系人都了解故障转移对性能的重要性。

作为一名 DBA,我希望能够验证应用程序连接正在使用什么属性。如果我没有对其进行适当的设置更改,RegisterAllProvidersIP可能会导致问题。请参阅:后续:创建可用性组侦听器之后

它似乎既没有被捕获,也sys.dm_exec_sessions没有被捕获sys.dm_exec_connections

如何捕获用于创建与我的实例之一的连接的(如果有的话)关键字值?

sql-server availability-groups
  • 1 个回答
  • 253 Views
Martin Hope
James Jenkins
Asked: 2019-12-20 07:31:47 +0800 CST

伪简单的 SQL Server 恢复是真的吗?

  • 4

“伪简单 SQL Server 恢复”是术语和场景,我刚刚在(现已删除)新问题SQL Server Truncates Transaction Logs with Copy Only Backups的评论中了解到

我去了Rajendra Gupta 于 2019 年 10 月 7 日发表的 Pseudo-Simple SQL Server Recovery Model帖子,并在那里使用了一些代码,我自己的一些代码做了一些测试。

创建数据库(Rajendra 的代码)

CREATE DATABASE RecoveryModel;

并验证它是否完整(Rajendra 的代码)

SELECT name, 
    recovery_model_desc
FROM sys.databases
WHERE name = 'RecoveryModel';

做一些工作(Rajendra 的代码,稍作修改)

Use RecoveryModel
CREATE TABLE test(id INT);
GO 
INSERT INTO test
VALUES(1);
GO 5000

查看使用了多少日志空间(我的代码)

select file_id
, type_desc
, name
, substring([physical_name],1,3) AS [Drive]
, physical_name
, state_desc
, size / 128 as 'AllocatedSizeMB'
, FILEPROPERTY([name],'SpaceUsed') /128 AS 'SpaceUsedMB'  --Addapted from https://sqlperformance.com/2014/12/io-subsystem/proactive-sql-server-health-checks-1
, (1- (FILEPROPERTY([name],'SpaceUsed') / CAST (size AS MONEY))) *100 AS 'PercentFree'
, growth / 128 as 'GrowthSettingMB'

 from sys.database_files
 order by type_desc Desc, name

我们发现有日志正在填充。再次运行工作并检查大小,日志增长,不足为奇。

尝试运行 t-log(我的代码)

BACKUP LOG [RecoveryModel] TO  
DISK = N'E:\SQLBackups\RecoveryModel.trn' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD 
GO

它失败并显示消息:

消息 4214,第 16 层,状态 1,第 8 行

无法执行 BACKUP LOG,因为没有当前数据库备份。

消息 3013,第 16 层,状态 1,第 8 行

BACKUP LOG 异常终止。

如果您尝试在“简单恢复”中备份数据库,那一点都不简单。你收到消息

消息 4208,第 16 层,状态 1,第 19 行

当恢复模式为 SIMPLE 时,不允许使用 BACKUP LOG 语句。使用 BACKUP DATABASE 或使用 ALTER DATABASE 更改恢复模式。

运行仅副本备份(我的代码)

BACKUP DATABASE [RecoveryModel] TO  
DISK = N'E:\SQLBackups\RecoveryModel.bak' WITH NOFORMAT, INIT, COPY_ONLY,  
NAME = N'RecoveryModel-Full Database Backup', SKIP, NOREWIND, NOUNLOAD
GO

它运行良好,检查日志空间并没有缩小。再运行几次工作负载,日志空间继续增长。运行 t-log 备份,它继续失败。

运行差异备份(我的代码)

BACKUP DATABASE [RecoveryModel] TO  
DISK = N'E:\SQLBackups\RecoveryModel.dif' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  
NAME = N'RecoveryModel-Diff Database Backup', SKIP, NOREWIND, NOUNLOAD
GO

它就像 t_log 一样失败

消息 3035,级别 16,状态 1,第 13 行无法为数据库“RecoveryModel”执行差异备份,因为当前数据库备份不存在。通过重新发出 BACKUP DATABASE 执行完整的数据库备份,省略 WITH DIFFERENTIAL 选项。

那么关于这个的“伪简单”是什么?日志增长,t-log 和差异备份失败。您有一个处于完全恢复状态的数据库,没有完全备份。

编辑它看起来像我的构建中的服务器特定的东西导致结果与其他人看到的不同。我接受了乔希的回答。

sql-server backup
  • 3 个回答
  • 391 Views
Martin Hope
James Jenkins
Asked: 2019-11-14 08:59:28 +0800 CST

在 SQL 查询中选择数据库的变量

  • 2

如果我想在FROMSQL 查询的子句中使用变量,我需要使用动态 SQL。如果查询又长又复杂,这可能会很痛苦。

从您当前未连接到的数据库中运行查询的方法有几种。我最常用的两种方法是这些..

Select * from msdb..sysjobs_view

或者

USE MSDB
Select * from sysjobs_view

如果您从 master 数据库开始,以上两种方法都会给您相同的结果。

当我将它们都放入动态 SQL 时,一个有效,另一个无效

从大师开始,这有效

DECLARE @DBN SYSNAME 
SET @DBN = 'msdb'
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'Select * from ' + @DBN + '..sysjobs_view'

EXEC (@Sql)

但这并不

DECLARE @DBN SYSNAME 
SET @DBN = 'msdb'
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'USE ' + @DBN 

EXEC (@Sql)
Select * from sysjobs_view

我得到错误

消息 156,级别 15,状态 1,第 14 行关键字“EXEC”附近的语法不正确。

我这样做的原因是:在大型复杂查询中使用一行动态 SQL 比尝试将整个查询转换为动态 SQL 更容易编写代码。我的问题只是关于为什么它不能与该USE条款一起使用。

为什么我不能使用带有USE子句的动态 SQL来更改数据库上下文?

注意:以下确实有效,并且很容易编码。但是我关于为什么的问题仍然存在。

DECLARE @DBN SYSNAME 
SET @DBN = 'msdb'
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'USE ' + @DBN  +'
Select * from sysjobs_view
'

EXEC (@Sql)
sql-server sql-server-2017
  • 1 个回答
  • 2310 Views
Martin Hope
James Jenkins
Asked: 2019-10-26 09:29:28 +0800 CST

为什么 sp_replmonitorhelpsubscription 没有参数就不能工作?

  • 2

我刚刚开始使用所有很酷的复制工具来以编程方式监视复制

早期发现之一是sp_replmonitorhelpsubscription

当我运行它时

 sp_replmonitorhelpsubscription

我得到

消息 20587,级别 16,状态 1,过程 sp_replmonitorhelpsubscription,第 77 行 [批启动第 16 行]

存储过程“sp_replmonitorhelpsubscription”的“@publication_type”值无效。

根据 MS 文档,它应该是有效的,默认值为 null

空(默认)

如果我使用参数运行它,它工作正常。

sp_replmonitorhelpsubscription  @publication_type = '0' 

我将它与事务复制一起使用,在单个服务器(报告副本)上我已经尝试过并且在 SQL 2017 和 2016 上得到了相同的结果。我正在针对分发数据库运行它

不确定如果我在做一些愚蠢的事情,如果 MS 文档是错误的,或者什么。

为什么 sp_replmonitorhelpsubscription 没有参数就不能工作?

sql-server sql-server-2017
  • 1 个回答
  • 338 Views
Martin Hope
James Jenkins
Asked: 2019-10-19 04:04:18 +0800 CST

SQL 日志文件 2TB 还不够,现在怎么办?

  • 7

这是一个假设性问题,来自sepupic的回答,他们解释说 2TB 是 SQL 日志文件的物理限制。

如果您需要超过 2Tb,则添加第二个日志文件。

我一直认为多个日志文件很糟糕,如多事务日志文件和性能影响一文中所述

我无法想象甚至会出现 2TB 日志文件的场景,但如果确实如此,并且由于某种原因更频繁的日志备份将无法治愈它(暗示了多个场景),你会怎么做?

您是否添加了第二个日志文件,或者还有其他内容?

sql-server transaction-log
  • 3 个回答
  • 1626 Views
Martin Hope
James Jenkins
Asked: 2019-10-03 06:23:50 +0800 CST

从不只为本地实例更改 distributor_admin 的密码?

  • 3

Per distributor_admin 是否需要系统管理员?distributor_admin 需要 SA 和 per是否可以更改“distributor_admin”的帐户名称?名称不能更改。

使用sp_changedistributor_password (Transact-SQL)更改密码以获取sp_changedistributor_password详细信息。

当分发数据库包含在本地实例上时,会自动生成并配置一个随机密码。资源

这一切意味着当您在本地实例(即报告数据库)上进行复制时,没有人知道密码是什么。破解密码似乎是不可能的。假设您正在监视和报告失败的登录尝试,您就会知道是否有人试图暴力破解密码。这导致了没有充分理由定期实际更改密码的争论。如果您不信任随机生成的密码,您可能想在第一天更改它,但即使这样可能会增加更多风险,然后它会消除,因为现在密码已经被看到并通过人工接触进行了处理。

是否有充分的理由仅为本地实例更改 distributor_admin 的密码?

sql-server replication
  • 1 个回答
  • 800 Views
Martin Hope
James Jenkins
Asked: 2019-09-18 06:33:28 +0800 CST

新数据库“BackupLocDb_###”从何而来?

  • 4

昨天我在一个 3 节点 AlwaysOn 实例组 SQL 2014 SP3 上做一些工作,今天早上我发现有一个名BackupLocDb_1260a388-153d-4c86-a30b-0fd3feafb116为主数据库的数据库。我没有创建数据库,但我被列为所有者。

这个数据库是从哪里来的?

最初尝试谷歌,引导我到一些 AlwaysOn 帖子,但没有清楚地提到数据库。我也没有在 DBA.SE 上找到它。

sql-server sql-server-2014
  • 1 个回答
  • 3308 Views
Martin Hope
James Jenkins
Asked: 2019-08-29 09:51:27 +0800 CST

在while循环中显示局部变量

  • 4

我有一个运行了几天的 while 循环(按设计),请参阅相关文件是否有限制可以将多少备份附加到单个文件?

我有一个显示循环计数的局部变量,当我在查询窗口中运行它时,我可以显示计数print @counter

我现在正在作业中运行 while 循环,我想显示该@counter值。经过一些研究,我尝试了RAISERROR (Transact-SQL),它应该显示在 SQL 错误日志中,但它不起作用。我阅读了Using RAISERROR我认为我的代码是正确的,但不确定它是否可以在带有局部变量的 While 循环中使用。

创建数据库并准备它

USE [master]
GO
Create database T_test

USE [master]
GO
ALTER DATABASE [T_test] SET RECOVERY FULL WITH NO_WAIT
GO

BACKUP DATABASE T_test to disk= N'K:\Test\T_test.bak' with noinit --Create first full
GO

尝试在查询窗口中运行以测试

DECLARE @counter int
SET @counter = 0
WHILE 1=1
BEGIN 
BACKUP DATABASE [T_test] TO  
DISK = N'K:\Test\T_Test.diff' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  
NAME = N'T_Test-Diff Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION
SET @counter = @counter + 1;
RAISERROR(N'Count equals :%d', 16, 1, @counter );
print @counter 
END

在几个循环后停止并检查 SQL 日志和查询消息

T_Test 点 jpeg

错误不在 SQL 日志中,但显示在查询消息中。

我认为您不能GO 5000000与局部变量一起使用,至少在我的尝试中,它每次重新声明时都会重置。

如何在while循环中实时显示局部变量?

sql-server sql-server-2017
  • 2 个回答
  • 135 Views
Martin Hope
James Jenkins
Asked: 2019-08-08 09:15:05 +0800 CST

可以将多少个备份附加到单个文件是否有限制?

  • 7

最近的一个问题让我看着 MS Documents 并想知道。

可以将多少个备份附加到单个文件是否有限制?

默认情况下,SQL Server 使用NOINIT将新备份附加到旧备份文件。

{ NOINIT | INIT } 控制备份操作是追加还是覆盖备份媒体上的现有备份集。默认设置是附加到介质上的最新备份集 (NOINIT)。资源

文档清楚地表明,缺少可用磁盘空间将导致附加备份失败。

如果在备份操作将备份附加到媒体集时磁盘文件已满,则备份操作将失败。备份文件的最大大小由磁盘设备上的可用磁盘空间决定;因此,备份磁盘设备的适当大小取决于备份的大小。资源

SQL Recover from .bak file with NOINIT的答案表明PositionfromRESTORE HEADERONLY表示文件中的单个备份。这是一个“smallint”字段,最大值应为32,767

大多数情况下,在谷歌搜索时,您会发现有人意外地附加了他们的备份,并且无法理解为什么备份如此之大。

假设有足够的磁盘空间,我没有找到任何关于可以附加多少备份的明确参考。限制是 32,767 还是完全其他?

sql-server backup
  • 3 个回答
  • 922 Views
Martin Hope
James Jenkins
Asked: 2019-07-17 07:09:15 +0800 CST

如何在 SQL Server 数据库中查询系统视图?

  • 2

我有一些针对查询存储运行的查询,该视图sys.query_store_wait_stats不在 SQL Server 2016 中,但在 SQL Server 2017 中。我希望我的查询在 SQL Server 2016 和 SQL Server 2017+ 中工作。

为此,我使用IF EXISTS如下

EXEC sp_query_store_flush_db;

SELECT * INTO Admin.dbo.query_store_runtime_stats FROM sys.query_store_runtime_stats;
SELECT * INTO Admin.dbo.query_store_runtime_stats_interval FROM sys.query_store_runtime_stats_interval;
SELECT * INTO Admin.dbo.query_store_plan FROM sys.query_store_plan;
SELECT * INTO Admin.dbo.query_store_query FROM sys.query_store_query;
SELECT * INTO Admin.dbo.query_store_query_text FROM sys.query_store_query_text;
IF EXISTS(select * FROM sys.views where name = 'query_store_wait_stats') -- View not in SQL Server 2016
    Begin
    SELECT * INTO Admin.dbo.query_store_wait_stats FROM sys.query_store_wait_stats; 
    End
SELECT * INTO Admin.dbo.query_context_settings FROM sys.query_context_settings;

这似乎是一个很好的解决方案,除了,下面不会在查询存储处于活动状态的 SQL Server 2017 数据库上返回任何结果

select * FROM sys.views where name = 'sys.query_store_wait_stats'

微软给出了这样的答案:How do I find all views in a database?

USE <database_name>;  
GO  
SELECT name AS view_name   
  ,SCHEMA_NAME(schema_id) AS schema_name  
  ,OBJECTPROPERTYEX(object_id,'IsIndexed') AS IsIndexed  
  ,OBJECTPROPERTYEX(object_id,'IsIndexable') AS IsIndexable  
  ,create_date  
  ,modify_date  
FROM sys.views;  

但它只返回用户视图,而不是系统视图。

一些简单的测试也不会返回存在的系统视图。您可以在没有 a 的情况下尝试它们,WHERE并且不会获得任何系统视图。

select * FROM sys.views where name = 'sys.query_store_wait_stats'

SELECT *
   -- DISTINCT NAME 
FROM SYS.OBJECTS
WHERE TYPE IN ('U','V')
AND NAME= 'query_store_wait_stats'

sys.query_store_wait_stats

我可以测试 SQL Server 版本,但如果视图被添加到 Service Pack 中的 SQL Server 2016,我希望我的查询只检查视图是否存在。

我如何找到(或测试)系统视图的存在?

sql-server sql-server-2016
  • 3 个回答
  • 1321 Views
Martin Hope
James Jenkins
Asked: 2019-04-19 08:23:30 +0800 CST

如何在 PLE 为 103 的情况下获得 100% 的 Buffer 缓存命中率?[复制]

  • 2
这个问题在这里已经有了答案:
SQL Prove memory pressure - high Buffer Cache Hit Ratio, but low Page Life Expectancy 2答案
3年前关闭。

我发现9990 的“缓冲区缓存命中率”是什么意思?(我从一个错误的博客中得到了 9000+ 的结果)并使用LowlyDBA/Denis Gobo 的解决方案与 Denis Gobo的PLE 检查器相结合,获得了 100% 的缓冲区缓存命中率和 103 的 PLE,这是怎么回事可能的?

100% 的缓冲区缓存命中率表示需要在内存中找到 100% 的页面,但 PLE 表示页面仅在内存中停留几分钟。

也许有一些 PLE 值,低于该值的缓冲区 chache 命中率不会增加价值?

SELECT (a.cntr_value * 1.0 / b.cntr_value) * 100.0 as BufferCacheHitRatio
FROM sys.dm_os_performance_counters  a
JOIN  (SELECT cntr_value, OBJECT_NAME 
    FROM sys.dm_os_performance_counters  
    WHERE counter_name = 'Buffer cache hit ratio base'
        AND OBJECT_NAME = 'SQLServer:Buffer Manager') b ON  a.OBJECT_NAME = b.OBJECT_NAME
WHERE a.counter_name = 'Buffer cache hit ratio'
AND a.OBJECT_NAME = 'SQLServer:Buffer Manager'

SELECT *
FROM sys.dm_os_performance_counters  
WHERE counter_name = 'Page life expectancy'
AND OBJECT_NAME = 'SQLServer:Buffer Manager'

PLE 103

我为什么关心:

我的实例是 SQL 2017 CU13,重型 OLTP,SQL 实例有 4GB RAM(单实例,服务器上 6GB RAM)。

我知道有超过 1.5GB 的 RAM 专用于 Plan Cache,根据这里 4GB RAM 的一些来源,Plan Cache 应该可以使用 3GB(在几个地方找到了类似的细节,但都是旧的,没有一个是微软)

Select ( SUM(size_in_bytes)) /1024 /1024 AS size_in_MB FROM sys.dm_exec_cached_plans

我还没有使用任何xevents 来衡量计划驱逐,只是想了解一些事情。

sql-server performance
  • 1 个回答
  • 915 Views
Martin Hope
James Jenkins
Asked: 2019-03-09 10:10:04 +0800 CST

什么是 Query Store 2017 中的“日志内存”

  • 4

在 SQL 2017 中有一个新的执行指标,“日志内存”,除了它是在 2017 年添加的,我没有找到任何关于它的信息。

执行指标:(SQL 2017)

CPU 时间、持续时间、执行计数、逻辑读取、逻辑写入、内存消耗、物理读取、CLR 时间、并行度 (DOP)、行数、日志内存、TempDB 内存和等待时间

我相信我了解所有其他指标是什么以及我可能关心的原因。

我在几个特定时期运行了前 5 个资源消耗查询的所有指标。我记录下来,现在我正在检查结果。我知道“日志内存”的(非常大的)值以 KB 为单位。

“日志内存”指标究竟是什么?

编辑,收到我检查过的两个答案

LowlyDBA的回答表明它是 5 个相关字段的组合sys.query_store_runtime_stats

使用jadarnel27 在其答案中提供的代码进行验证

我创建了数据库“231682”并运行了 5 个字段的测试查询,我得到的结果非常相似

231682-数据

我总结(在 Excel 中使用=SUM())我的值并得到 1,383,040(字节)

我查看了查询存储,对于使用的日志内存 (KB),它显示的值为 354,058,240 (KB),这个数字大了几个数量级,与字节相比也是 KB,以字节为单位为 354,058,240,000 (字节)

231682-QS

我把所有字段加起来,只得到1,655,236(byte)

SELECT *
FROM sys.query_store_runtime_stats qsrs
WHERE qsrs.avg_log_bytes_used > 0;

我怀疑我的问题的答案是 SQL 2017 中的“日志内存”指标没有任何实际价值。这个小实验中显示的值是 354GB,高得不切实际。

sql-server sql-server-2017
  • 2 个回答
  • 481 Views
Martin Hope
James Jenkins
Asked: 2019-03-09 04:49:33 +0800 CST

如何导出查询存储数据?

  • 7

我在 SQL 2017 实例上运行了查询存储 (QS)。目前在 RTM,RTM CU13 目前正在测试中,将在下个月的补丁窗口中应用于 prod。

虽然大多数查询和报告会快速返回结果而几乎没有影响,但我尝试在等待周围查看的任何东西都是有问题的。CPU 使用率从 20% 上升到 80%,并在那里停留了几分钟,直到我杀死它。这是 24/7 生产系统,所以如果我真的想查看 QS 等待,我将需要在其他地方进行。

该数据库为 150GB,其中 1000MB 空间用于 QS。我有一个 10GB 空间的沙箱,所以如果我能把 QS 数据拿出来,我就可以在那里玩。

我环顾四周,我没有找到如何做到这一点。我发现的最好的是这个sql.sasquatch 2016 帖子,其中有 Erin Stellato 的 2016 年回答

目前没有导出和/或导入查询存储数据的选项,但是有一个 Connect 项目可以投票:https ://connect.microsoft.com/SQLServer/feedback/details/2620017/export-query-store -tables-separately-from-the-database-tables

注意:链接转到重定向“Microsoft Connect 已停用”看起来实际链接应该是https://feedback.azure.com/forums/908035-sql-server/suggestions/32901670-export-query-store -tables-separately-from-the-data

查看 Microsoft,我发现您可能用来访问数据的大多数东西都是视图、存储过程或报告。我没有看到从数据库中提取所有 QS 内容的方法。

直接查询的示例,使用视图 Kendra Little的示例我玩弄了Select *从视图中执行操作并将结果导出到我的沙箱的想法。但由于我没有找到任何人谈论它,我不确定这是个好主意。

有关的

  • 查询存储的最佳实践
  • 查询存储如何收集数据
  • 查询商店目录视图
  • 查询存储存储过程
  • 使用查询存储监控性能

此外 ,我希望能够保留 CU13 之前的查询存储结果,以用作比较 CU13 之后的基准。

在第一个答案后编辑并编辑相同的 jadarnel27 对答案的 最近编辑添加了很好的信息,但我不关心用户界面,我希望能够在不更改数据库或影响性能的情况下查询数据。作为次要目标,我希望能够存档 QS 数据,以便我可以查看以前的性能(即之前和升级,但在旧的 QS 数据会被清除之后)

sql-server sql-server-2017
  • 3 个回答
  • 3927 Views
Martin Hope
James Jenkins
Asked: 2019-01-10 08:07:04 +0800 CST

如何查看 xEvent event_file 数据

  • 0

我有一个小的 xEvent 将结果作为 .xel 发送到 G:\XEvents 中的 event_file,我想用 SSMS 探索数据。我一直在寻找解决方案,发现了几篇关于读取环形缓冲区创建的 XML 的帖子。但我无法让它在我的 event_file 上工作。

我阅读了 Jes Schultz Borland 的文章How to Query Extended Events Target XML但它对我不起作用。我没有对 XML 做任何重要的事情,当我用 word 打开 event_file 时,它​​看起来不像 XML。

我可以使用 SSMS 显示它;> 实例 > 管理 > 扩展事件 > 会话 > [MyEvent] > 包 > 查看目标数据,但我无法真正查询它。

sql-server ssms
  • 2 个回答
  • 3250 Views
Martin Hope
James Jenkins
Asked: 2018-12-13 06:28:37 +0800 CST

是否可以判断传入连接是否正在使用 SQL Server 别名?

  • 0

使用 SQL Server 配置管理器创建供客户端使用的服务器别名是一个很酷的工具,在很多情况下都可以使用

在我的 DBA 职位上,我无权访问应用程序服务器,无法查看SQL Server 配置管理器或SQL Server 客户端网络实用程序(不确定这是正确的链接)是否用于创建别名。

有什么方法可以使用 SSMS 或任何日志、事件等来识别传入连接正在与别名连接吗?

sql-server alias
  • 1 个回答
  • 127 Views
Martin Hope
James Jenkins
Asked: 2018-10-25 07:35:41 +0800 CST

为什么默认情况下系统数据库的跨数据库所有权链接

  • 1

我正在阅读有关跨数据库所有权链接服务器配置选项的信息

它讨论了如何以及为什么使用(或不使用)这个选项并说

不建议将跨数据库所有权链接设置为 1,除非 SQL Server 实例托管的所有数据库都必须参与跨数据库所有权链接,并且您了解此设置的安全隐患。

它还提供此代码进行检查。

SELECT is_db_chaining_on, name FROM sys.databases;

根据服务器配置选项 (SQL Server),“跨数据库所有权链接”的默认值为 0(零)

当我在我的服务器上运行它时,旧的、新的或任何它们看起来都在 master、tempdb 和 msdb 上启用了它。我检查了从 SQL 2012 到 SQL 2017、企业版和标准版的几个。

我确实发现它默认设置为打开但不知道为什么。

  • tempdb设置无法更改
  • 主设置无法更改
  • msdb 设置可以更改

如果它不好,为什么它在系统数据库上默认打开?

为什么我找不到任何关于为什么系统数据库默认启用它的内容?

sql-server configuration
  • 1 个回答
  • 681 Views
Martin Hope
James Jenkins
Asked: 2018-09-08 04:50:03 +0800 CST

如何使用 T-SQL 停止 SQL Server 代理作业计划程序?

  • 1

我有一项工作,我在协调的时间段内手动启动,做了一堆繁重的工作(主要是恢复备份和为不同的服务器配置)

有几个作业计划以分钟到几天的增量运行。我想“关闭”调度程序,这样在我的手动工作完成之前,什么都不会按计划运行。我意识到,在调度程序重新启动后,错过的作业将在下一个预定时间之前不会再次运行。

  • 第一步:停止调度程序
  • 几个举重的步骤:做艰苦的工作
  • 最后一步:启动调度器

我找到了一个Oracle命令,但我是 100% Microsoft SQL Server

我知道如果我关闭 SQL 代理,作业将不会运行,但这不是我想要的。

今天存在的工作预计下次不会是相同的工作。使用EXEC dbo.sp_update_job禁用作业不是一个可行的解决方案。

附加信息:可能还有一些作业由于某种原因被故意禁用,但确实希望重新启用。停止调度程序似乎是最好的选择。

sql-server sql-server-2014
  • 2 个回答
  • 6030 Views
Martin Hope
James Jenkins
Asked: 2018-08-23 07:14:19 +0800 CST

如何在查询存储中搜索查询中的特定单词或命令?

  • 2

我有一个 SQL 2016 SP1 企业版,它有一个查询存储处于活动状态的数据库。

我想在保存的查询中搜索特定的词或命令。我用谷歌搜索了一下,什么也没看到。在这种情况下,我想找到“SHRINK”,但同样的方法应该可用于存储查询中的任何文本。

期待“为什么?” 评论。我有一个供应商应用程序可以完成大量工作,然后缩小数据库和日志文件。我试图找到执行此操作的查询。

如何在查询存储中搜索查询中的特定单词或命令?

sql-server sql-server-2016
  • 1 个回答
  • 273 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve