小编Mar*_*lli的帖子

更新服务器中所有数据库所有表的统计信息

嗨,我一直在编写一个脚本来更新我所有数据库上所有表的统计信息。这个想法是稍后对其进行参数化,但作为一个快速解决方案,今天不想实施Ola 的脚本,请按照下面的脚本进行操作。

我已经在几台服务器上对其进行了测试,但在我安排它在周日早上在实时服务器上运行之前,想获得一些想法并与您分享。

SET NOCOUNT ON

DECLARE @DBS TABLE (I INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
                    DBNAME SYSNAME NOT NULL )

DECLARE @I INT
        ,@Z INT
        ,@SQL VARCHAR(1008) 
        ,@j INT
        ,@Y INT
        ,@MYDB SYSNAME

INSERT INTO @DBS
SELECT s.name 
FROM sys.databases s
INNER JOIN SYS.master_files F ON S.DATABASE_ID = F.database_id  AND F.data_space_id = 1
WHERE S.STATE = 0 -- online
  AND S.database_id > 3 -- exclude master, tempdb and model -- I left msdb 
  AND S.is_read_only = …
Run Code Online (Sandbox Code Playgroud)

sql-server statistics index-statistics

3
推荐指数
1
解决办法
6733
查看次数

SQL Server - 链接服务器 - 将 OPENROWSET 与 Windows 集成安全性结合使用

我看过很多关于使用集成安全性(Windows 身份验证)的 OPENROWSET 的文章,但我无法让它为我工作。

使用 SQL Server 身份验证工作正常:

 select *
 FROM
 OPENROWSET('SQLOLEDB',
 'myserver';'monitor';'#J4g4nn4th4#',
 'SELECT GETDATE() AS [RADHE]')
Run Code Online (Sandbox Code Playgroud)

但我尝试使用 Windows 身份验证运行相同的查询,但它不起作用:

select *
 FROM
 OPENROWSET('SQLOLEDB',
'myserver';'Integrated Security=SSPI',
 'SELECT GETDATE() AS [RADHE]')
Run Code Online (Sandbox Code Playgroud)

有人可以发布一个有效的示例吗?

这是一篇描述 OPENROWSET 用法的好文章。

使用 OPENROWSET 的工作脚本示例 - 请阅读评论

 ----------------------------------------------------------------
 -- this works - linked server REPLON1
 ----------------------------------------------------------------

select *
 FROM
 OPENROWSET('SQLOLEDB',
'Server=REPLON1;Trusted_Connection=yes;',
 'SELECT GETDATE() AS [RADHE]')

 select *
 FROM
 OPENROWSET('SQLOLEDB',
'Server=REPLON1;Trusted_Connection=yes;',
 'SET FMTONLY OFF select * from sys.dm_exec_requests')


 SELECT a.*
FROM OPENROWSET('SQLOLEDB', 'server=replon1;Trusted_Connection=yes;', 'SET
FMTONLY OFF select * …
Run Code Online (Sandbox Code Playgroud)

security sql-server linked-server sql-server-2012 openrowset

3
推荐指数
1
解决办法
2万
查看次数

如何在多个实例上配置 SQL Server 端口?

我有一个名为 SQLDWDEV01 的服务器,有 2 个实例:default 和 UAT。

对于使用端口 1433 的默认实例,一切正常。

但是,根据下图配置的 UAT 实例无法从本地计算机连接。

我可以访问,并且启用了远程连接。

我错过了什么才能连接到这个实例?

如果这个问题不完整,请提问,我会回复。

没有防火墙。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

我目前遇到的错误消息是:

无法连接到 sqldwdev01\UAT。
与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)(Microsoft SQL Server,错误:-1)

sql-server installation network tcpip sql-server-2014

3
推荐指数
1
解决办法
2万
查看次数

如何获取有关导致阻塞的睡眠进程的信息?

我有一个程序可以让我查看 sql server 中当前正在运行的内容

此过程不使用 sys.sysprocess,因为它已被弃用

但是,我正在努力寻找有关导致阻塞的休眠进程所需的信息。

这是因为 DMV sys.dm_exec_requests不保存任何休眠进程的请求。

我不想使用sp_whoisactive或任何监视工具。sp_whoisactive 使用 sys.sysprocesses。

我的会议 81

  BEGIN TRANSACTION T1

  SELECT @@TRANCOUNT

  update 
  [TableBackups].[dbo].[spstats]
  set execution_count  = 1000
  where dbname = 'master'

  select @@spid
Run Code Online (Sandbox Code Playgroud)

我的会话 51

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

SELECT TOP 1000 *
  FROM [TableBackups].[dbo].[spstats]
  WITH (HOLDLOCK)
Run Code Online (Sandbox Code Playgroud)

上述 2 个会话同时运行,因此会话 81 阻塞了会话 51。

我在下面有这个选择,它获取有关会话 81 的信息,但是,我无法获取 dbid,并且我不确定 Open_transactions 和整个等待信息。

SELECT es.session_id AS session_id
,COALESCE(es.original_login_name, 'No Info') AS login_name
,COALESCE(es.host_name,'No …
Run Code Online (Sandbox Code Playgroud)

sql-server dmv blocking

3
推荐指数
1
解决办法
3077
查看次数

如何备份存储过程的当前代码及其权限?

在测试、开发和生产环境中,我经常收到更改存储过程的请求。

我想要一种简单的方法来在更改之前将存储过程的当前代码保存到我的“ tablebackups ”数据库中的一个表中- 这是一个我在更新或删除记录之前保存记录的数据库。

我在想这样的事情:

sp_helptext 'sp_myprocedure'
Run Code Online (Sandbox Code Playgroud)

使用的想法是这样的:

select * into tablebackups.dbo.my_procedure_20150827_1220
from ss_save_my_procedure 'my_procedure'
Run Code Online (Sandbox Code Playgroud)

有人已经为此开发了解决方案吗?

sql-server backup stored-procedures sql-server-2014

3
推荐指数
1
解决办法
985
查看次数

删除重复行的最快方法是什么?

我需要从大表中删除重复的行。实现这一目标的最佳方法是什么?

目前我使用这个算法:

declare @t table ([key] int  )

insert into @t select 1
insert into @t select 1
insert into @t select 1
insert into @t select 2
insert into @t select 2
insert into @t select 3
insert into @t select 4
insert into @t select 4
insert into @t select 4
insert into @t select 4
insert into @t select 4
insert into @t select 5
insert into @t select 5
insert into @t select 5
insert into …
Run Code Online (Sandbox Code Playgroud)

sql-server delete duplication sql-server-2014

3
推荐指数
1
解决办法
4088
查看次数

如何将 varchar 值列表插入到单列表中?

在 SQL Server 2005 中:

CREATE TABLE __RADHE
(
    itemNo varchar(10) not null primary key clustered
);
GO

INSERT INTO __RADHE ???

'34926840', '34927020', '34927202', '34927384', '34927566',
'34927830', '34927889', '34930743', '34930750', '34927897',
'34927848', '34927574', '34927392', '34927210', '34927038',
'34926857', '34917120', '34917286', '34917443', '34926865',
'34927046', '34927228', '34927400', '34927582', '34927855',
'34927905', '34930768', '34930776', '34927913', '34927863',
'34927590', '34927418', '34927236', '34927053', '34926873',
'34917450', '34917294', '34917138', '34917146', '34917302',
'34917468', '34926881', '34927061', '34927244', '34927426',
'34927608', '34927871', '34927921', '34930784', '34927616',
'34927434', '34927251', '34927079', '34926899', '34917476',
'34917310', '34917153', '34917161', …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server insert

3
推荐指数
1
解决办法
3万
查看次数

ssms - 如何格式化 T-SQL 脚本?

作为将文章添加到我的出版物的过程的一部分,我使用存储过程sp_addarticle

use [Returns]
exec sp_addarticle @publication = N'USReturns', @article = N'tblReturnsContainerTypeDescr', @source_owner = N'dbo', @source_object = N'tblReturnsContainerTypeDescr', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F, @identityrangemanagementoption = N'none', @destination_table = N'tblReturnsContainerTypeDescr', @destination_owner = N'dbo', @status = 24, @vertical_partition = N'false', @ins_cmd = N'CALL [sp_MSins_dbotblReturnsContainerTypeDescr]', @del_cmd = N'CALL [sp_MSdel_dbotblReturnsContainerTypeDescr]', @upd_cmd = N'SCALL [sp_MSupd_dbotblReturnsContainerTypeDescr]'
GO
Run Code Online (Sandbox Code Playgroud)

我有超过数百篇文章的出版物。我保存了脚本,但我希望它们的格式正确。如何在 SSMS 中格式化我的脚本?

我想以这种方式查看我的脚本:

use [Returns]
exec sp_addarticle 
 @publication = N'USReturns', 
 @article = N'tblReturnsContainerTypeDescr', 
 @source_owner = N'dbo', 
 @source_object …
Run Code Online (Sandbox Code Playgroud)

replication sql-server ssms sql-server-2014

3
推荐指数
2
解决办法
2323
查看次数

如何找出哪些进程导致数据库或数据库文件自动增长?

我有一个进程渴望 tempdb,但我正在努力识别这个进程。

\n\n

我有什么方法可以实现这一目标?

\n\n
\n

我们已收到警报,因为 Tempdb 现在已占据您之前在 T:\\ 驱动器上回收的空间。同样,磁盘上还剩余 10MB。从今天早上 10:18 开始,我可以在 REP 实例上的数据文件中看到许多自动增长事件。总共有 330 个自动增长事件,每个事件大小为 512MB,总计 168GB。

\n\n

事后很难强调什么在 Tempdb 中使用了这个空间,您是否知道今天有任何进程可能以这种方式使用 Tempdb?

\n
\n\n

/ ------------------------------------------------- ----------- \\

\n\n

确定自动增长事件发生的频率

\n\n

当 SQL Server 执行自动增长事件时,触发自动增长事件的事务必须等到自动增长事件完成后才能完成。当自动增长事件发生时,这些自动增长事件会导致您的性能略有下降。因此,最好能够适当调整数据库大小,以便很少发生自动增长事件。

\n\n

如果您对系统上自动增长事件发生的频率感兴趣,您可以使用跟踪捕获这些事件。通过了解哪些数据库正在执行自动增长事件,您可以调整这些数据库文件增长属性,以便它们执行自动增长事件的频率降低。您可以使用探查器 \xe2\x80\x9cData File Auto-grow\xe2\x80\x9d 和/或 \xe2\x80\x9cLog File Auto-grow\xe2\x80\x9d 事件来跟踪这些数据库自动增长事件。如果您运行的是 SQL Server 2005 或更高版本,则默认跟踪已捕获这两个自动增长事件。如果您还没有\xe2\x80\x99t 关闭默认跟踪,那么您可以使用默认跟踪文件来查找这些自动增长事件。如果您已关闭默认跟踪,则可以启用它,或者设置新的探查器跟踪以捕获 \xe2\x80\x9cData File Auto-grow\xe2\x80\x9d 和 \xe2\x80\x9cLog File Auto-grow \xe2\x80\x9d 事件。

\n\n

默认跟踪记录到文件中。我在清单 4 中提供了代码,向您展示如何从默认跟踪文件中提取所有自动增长事件。如果您创建自己的探查器跟踪会话来捕获这些自动增长事件,那么您将需要修改此脚本以满足您的探查器跟踪设置。

\n\n

https://www.simple-talk.com/sql/database-administration/sql-server-database-growth-and-autogrowth-settings/

\n\n

马塞洛·米奥雷利\n2014 年 3 月 11 日

\n\n
\\*--------------------------------------------------*/\nDECLARE @filename NVARCHAR(1000);\nDECLARE @bc …
Run Code Online (Sandbox Code Playgroud)

process sql-server tempdb sql-server-2014

3
推荐指数
1
解决办法
3968
查看次数

选择运算符上的警告标志 - 这是什么意思?

在比较 2 个存储过程的执行计划时,在第二个存储过程中,我收到一个警告标志(由红色箭头标记)。

这是什么意思?

在此处输入图片说明

performance sql-server stored-procedures execution-plan sql-server-2014 query-performance

3
推荐指数
2
解决办法
1939
查看次数