我的目标是审计一个实例上的所有查询,谁在运行它们,从哪里运行,读取多少,以便在另一个实例上整合/迁移。
找出最好的方法是通过扩展事件到 .xel 文件,超过 2 周,复制这些文件并在我规格齐全的桌面上进行分析。用最少的细节(字段)设置捕获,所以真的不能让它更小 - 12 个文件中大约 12GB。在 SSMS 中使用“合并扩展事件文件”加载 .xel 文件并按照https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/advanced-viewing-of- 中的详细说明进行处理target-data-from-extended-events-in-sql-server?view=sql-server-2017
这真的是最好的方法吗?有没有更好的工具来加载文件?使用 SSMS 17.7真的很慢- 例如:到目前为止(在进入分组和聚合之前)只有 4 个过滤器,它花了 12 个小时来处理 50% 的日志。
有没有办法查看 SQL Server 2014 上过去几周/几个月的增长和收缩事件的完整历史记录?(要支持的新实例,从票务系统中注意到它们之前有“日志驱动器已满”的历史记录,因此希望在再次发生之前深入研究根本原因。)
这很有用:识别文件增长事件。想出了下面的查询,但它没有显示任何“手动”日志收缩事件,只显示“自动”事件。我是否以错误的方式这样做,还有其他地方可以查找过去的信息吗?
select
te.name as event_name,
tr.DatabaseName,
tr.FileName,
tr.IntegerData,
tr.IntegerData2,
tr.LoginName,
tr.StartTime,
tr.EndTime
--select *
from
sys.fn_trace_gettable(convert(nvarchar(255),(select value from sys.fn_trace_getinfo(0) where property=2)), 0) tr
inner join sys.trace_events te on tr.EventClass = te.trace_event_id
where
tr.EventClass in (93, 95) --can't identify any other EventClass to add here
order by
EndTime desc;
Run Code Online (Sandbox Code Playgroud) 我有一个数据库图表,我想从 SQL 中提取它并对其进行操作以创建一个用户友好且易于使用的 ERD。该数据库包含 200 多个表,我想将这些表映射出来以向其他人展示它是如何工作的。
我不想在 Visio 重新格式化 ERD 并且看起来不再像我在数据库设计中拥有的模型时进行逆向工程。
我知道您可以右键单击并复制到剪贴板,但这会将模型捕获为图像,这意味着我无法对其进行操作。
有没有我不知道的替代软件?
我在多台服务器上有许多似乎不再使用的数据库。我想删除这些数据库,但我不确定它们是否真的在使用中。
我找不到它们的所有者,没有与它们相关联的流程,而且几个月来没有任何内容写入表中。
在今天之前未启用登录审核。
服务器版本范围从 2005 年到 2014 年,但其中大部分都在 2008 R2 上。
有没有办法检查这些数据库的登录历史记录,回溯 6 个月,只是在使数据库脱机之前与这些用户仔细检查?
我得到了一个查看索引使用历史的建议;有人能够为此共享脚本吗?
我正在尝试估计 SQL 2012 上几个 1TB+ 数据库的还原时间。是否可以查看去年已完成的还原并列出完成时间?这是世界另一端的一个奇怪的远程服务器,我所知道的完全恢复用于在新的每个月初运行,出于某种原因,但无法弄清楚如何访问历史记录。
有没有办法直接从 Azure 中的“创建虚拟机”向导更改默认 SQL 排序规则?库中的 SQL VM 映像是为 SQL_Latin1_General_CP1_CI_AS 设置的。
浏览向导的 SQL Server 设置,没有任何关于整理的内容。我还在生成的模板中搜索了参数(如下所列),但在整理方面也没有任何内容。我错过了一些隐藏的方法吗?现在使用 SQL 2016,但其他版本似乎相同。
"sqlConnectivityType": {
"type": "string"
},
"sqlPortNumber": {
"type": "int"
},
"sqlStorageDisksCount": {
"type": "int"
},
"sqlStorageWorkloadType": {
"type": "string"
},
"sqlStorageDisksConfigurationType": {
"type": "string"
},
"sqlStorageStartingDeviceId": {
"type": "int"
},
"sqlStorageDeploymentToken": {
"type": "int"
},
"sqlAutopatchingDayOfWeek": {
"type": "string"
},
"sqlAutopatchingStartHour": {
"type": "string"
},
"sqlAutopatchingWindowDuration": {
"type": "string"
},
Run Code Online (Sandbox Code Playgroud)
2018 年 10 月后期编辑:再次检查,向导或模板中仍然没有整理选项。
下面的脚本将查询 Ola 的维护解决方案结果表 (CommandLog),并在过去 4 周内对每两周一次的重新索引执行持续时间进行比较。
现在看起来,这是一个快速的技巧,可以帮助我调整维护窗口。但我想删除日期硬编码,这样我就不必在未来的每个周末手动添加一个新的 JOIN。
请提供完整的重写(动态 SQL?)或仅提供有关如何实现此功能或要包含的其他一些有用功能的一些提示。确定更改 sproc 并将额外的输出添加到表中。使用 SQL 2016。如果已经有一个脚本可以满足这个目的,那么很高兴使用那个脚本。
WITH t0 AS
(
SELECT ObjectName, IndexName, IndexType
FROM Tools.dbo.CommandLog
WHERE 1=1
AND DatabaseName = 'testdb'
AND CommandType = 'ALTER_INDEX'
GROUP BY ObjectName, IndexName, IndexType
)
SELECT
t0.ObjectName
,t0.IndexName
,t0.IndexType
,DATEDIFF(ss,t1.StartTime,t1.EndTime) as '20-40 01-06'
,DATEDIFF(ss,t2.StartTime,t2.EndTime) as '5-40 01-07'
,DATEDIFF(ss,t3.StartTime,t3.EndTime) as '20-40 01-13'
,DATEDIFF(ss,t4.StartTime,t4.EndTime) as '5-40 01-14'
,DATEDIFF(ss,t5.StartTime,t5.EndTime) as '20-40 01-20'
,DATEDIFF(ss,t6.StartTime,t6.EndTime) as '5-40 01-21'
,DATEDIFF(ss,t7.StartTime,t7.EndTime) as '20-40 01-27'
,DATEDIFF(ss,t8.StartTime,t8.EndTime) as '5-40 01-28'
FROM t0
LEFT JOIN …Run Code Online (Sandbox Code Playgroud) 设想:
Server1 运行 SQL Server 2012,带有服务主密钥 A,db1 带有数据库主密钥 1,对称密钥和证书可用。用于保护 DBMK 1 的密码未知,SMK A 启用加密。
Server2 运行带有 SMK B 的 SQL Server 2012,带有 DBMK 2 的 db2,对称密钥和证书可用。用于保护 DBMK 2 的密码未知,SMK B 用于加密。
需要将 db2 恢复到 Server1。表中有一个加密列,用于存储内部 ASP.NET 应用程序的密码。还有其他应用程序访问 Server1 上的 db1 中的加密数据。
题:
将 db2 恢复到 Server1 并访问加密数据而不会对 db1 造成问题的最佳选择?
测试:
简单的restore会把db2的数据、对称密钥和证书带到Server1,但是SMK A不能用来解密数据:“请在数据库中创建主密钥或者在会话中打开主密钥,然后再执行此操作.” 在测试服务器上恢复了 SMK B,一切都很好。无法在 Server1 上使用此解决方案,因为我相信将 SMK B 恢复到 Server1(覆盖 SMK A)将禁止我访问 db1 中的加密数据。不希望发生这种情况。
有什么建议吗?谢谢你。
这可能吗 ?在 SQL Server 2012+ 上,授予非 sysadmin 用户访问权限以查看执行计划?并且只能对选定的数据库执行此操作吗?
security sql-server permissions execution-plan sql-server-2012
场景:SQL Server 2014 CU6。1 个 AG 与 2 个数据库(兼容性级别 100)。Windows Server 2012 R2 上具有 3 个节点的故障转移群集。节点 1 和节点 2 上的主要可用性副本。节点 3 上的次要可用性副本(无投票)。异步提交、手动故障转移、可读辅助。节点 3 用于在这 2 个数据库上运行报告(在节点 1 和 2 的 AG 外部运行的 8 个数据库中)。
问题:希望将这些从 SQL 2014 修补到 SP1 和最新的 CU。不是我的构建,到目前为止还没有使用 AG 或 FC 的经验。我的“测试”环境也用于开发,所以没有错误的余地。
问题:
修补 3 个节点的最佳顺序是什么?
我是否首先必须从我正在修补的节点上的 AG 中删除数据库?
修补辅助节点时是否需要将其取出?
没有这方面的经验,我在文档中找不到明确的答案(可能不支持?):https ://msdn.microsoft.com/en-us/library/dn178483( v=sql.120) .aspx
sql-server failover availability-groups sql-server-2014 patching
假设某人有 5 个不同的 SQL Server 实例在服务器上运行。最初都使用动态端口。
限制其中一个实例使用静态端口 1433 而所有其他实例仍然使用动态端口是否安全?
通常,根据启动顺序,一个动态实例可能会声明端口 1433,因此固定端口实例以后无法获取它。这可能会阻止固定端口实例运行吗?
或者在 SQL Server 中是否有任何内部机制先启动固定端口实例,然后再启动动态端口实例?
注意到 SQL Server 2016 CTP2 的文档声明“默认情况下,安装程序添加与 CPU 数量或 8 一样多的 tempdb 文件,以较低者为准”。 https://msdn.microsoft.com/en-us/library/bb510411(v=sql.130).aspx
但我一直认为“正确”的比例应该是 CPU 核心数量的一半,对于 8 核心以下的机器来说。
这是否应该被视为微软的官方建议,甚至适用于2012/2014年?
我有几个带有 SP2 和 CU4/CU5 的 x64 SQL 2012 Developer 服务器。根据您的经验,使用此 SP/CU 组合,是否支持升级到 2014 Developer?我只能找到有关从 2012 SP1 到 2014 的支持路径的信息。