标签: sql-server

进程的 SPID 更改?

在 SQL Server 2012 上,进程 SPID 可以在操作中更改吗?我们有一个非常独特的查询,我们一直在监视(生产,但受控测试),并且在不同的时间间隔使用不同的 SPID 看到它。这是一个独特的查询,其他人不应该运行,至少使用这些参数,因此我们不应该使用不同的 SPID 来查看它,除非......查询可以在过程中更改 SPID 吗?

我的理解是这是不可能的,所以更有可能是由于某些未知原因,尽管没有用户交互,但应用程序正在重新提交这个独特且破坏性能的查询,从而生成一个新的 SPID。

performance sql-server stored-procedures

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

SQL Server -- 重复(几乎)相同子查询的更有效替代方法

我需要提高 WHERE 子句中多个子查询的效率。上下文是现有产品的报告生成器。 我可以提供的唯一输入是 WHERE 子句。我有 3 个几乎相同的子查询,它们之间只有 1 个不同。我需要验证至少有 1 条记录符合每个条件。

这是查询的要点

Where
  Exists (Select 1 From t1  ...etc... where ...etc... and fld1='X')
  AND
  Exists (Select 1 From t1  ...etc... where ...etc... and fld1='Y')
  AND
  Exists (Select 1 From t1  ...etc... where ...etc... and fld1='Z')
Run Code Online (Sandbox Code Playgroud)

3 个子查询中的每一个中的“选择”都是相同的。它确实加入并在它的 Where 子句中有其他字段,包括对来自外部查询的 PK 的引用:我只显示不同之处。

t1 中大约有 50 万条记录。上面的查询现在已经运行了 30 多分钟。我需要把它缩短到 30 秒。

我的选择非常有限——没有 DECLARE,没有临时表,没有“OVER”。

sql-server subquery where

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

在服务器的所有实例上备份所有数据库的 TSQL 解决方案?

我很确定我想要的当前实现是不可能的,sys.databases 目录视图在服务级别范围内可以了解其他 SQL Server 实例 (lol)。但我认为很多事情用电脑是不可能的,所以希望我能用不同的方式解决我的问题。

我已经创建了一个 PowerShell 解决方案,该解决方案使用 SMO 来备份所有实例上的所有数据库,但是由于安全原因,我无法在不将运行代理作业的代理帐户设为本地管理员的情况下使该解决方案工作服务器。

作为替代方案,我编写了一个 T-SQL 脚本,该脚本将作为代理作业运行,并每 15 分钟对 SQL Server 实例中的所有数据库进行完整、差异或事务备份。

    DECLARE @sql nvarchar(MAX) = N'';

--Check time for full backup
IF (DATENAME(weekday,getdate()) = 'Sunday' AND convert(time,getdate()) > '00:00' and convert(time,getdate()) < '00:15')
    BEGIN
        SELECT @sql += 'BACKUP DATABASE ' + QUOTENAME(name) 
                    + ' TO DISK = N''C:\backups\' + @@ServiceName  + '_' + name + '__' 
                    + cast(year(getdate()) as nvarchar(4)) + '_' + cast(month(getdate()) as nvarchar(2)) + '_' + cast(day(getdate()) as nvarchar(2)) …
Run Code Online (Sandbox Code Playgroud)

sql-server backup instance t-sql smo

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

SQL Server 在 XML 字段中选择

我需要以下情况的帮助:

在我的表 SQLServer 2012 中有一个带有 xml 值的字段,我想选择该字段中的数据并在表单列中显示结果。

图片1

<row> 
  <ID_Cota>162986</ID_Cota>
  <ID_Taxa_Plano>1000</ID_Taxa_Plano>
  <ID_Plano_Venda>1020</ID_Plano_Venda>
  <ID_Pessoa>18522</ID_Pessoa>
</row>
Run Code Online (Sandbox Code Playgroud)

谢谢你。

xml sql-server sql-server-2012 sql-server-2014

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

检查触发器是否被 INSERT 或 DELETE 触发

我知道这是您可以在本网站上找到的最简单的问题,但我无法在互联网上找到答案。

如何检查触发器是否由INSERT或触发DELETE

例子

CREATE TRIGGER [dbo].[TestTrigger]
On [dbo].[Table1]
AFTER INSERT, DELETE
AS
    --if save
    --do some work

    --else if delete
    --do some work other work
Run Code Online (Sandbox Code Playgroud)

如果是insert,我想做一些工作,如果是delete ,我想做一些其他工作。

请提供相同的代码片段。

trigger sql-server insert t-sql sql-server-2008-r2

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

在什么情况下我更有可能从异步自动更新统计信息中受益?

我每周使用Ola Hallengren 的解决方案更新统计数据。

根据下面的文章,我正在考虑启用 Auto Stats Async 并打开跟踪标志 2371。

具有大表的数据库应使用自动更新统计数据异步功能

现在,我的数据库的 async 选项为 false:

在此处输入图片说明

此外,来自SQL Server 2008 及更高版本的重要修补程序

此设置允许异步自动更新统计信息,同时您当前运行的查询继续使用旧统计信息,直到更新的统计信息可供使用,从而降低不可预测的查询性能。对此的替代方案(这是默认设置)是暂停查询执行(仅适用于使用该对象统计信息的查询),同时为该对象自动同步更新统计信息。根据对象的大小以及硬件和 I/O 子系统,这可能需要几秒钟到几分钟的时间。

题:

在测试环境中,在将 Auto Update Stats Async 设置为 ON 之前/之后,可以进行哪些好的简单测试?

在什么情况下我更有可能从异步自动更新统计信息中受益?

数据库 500GB+,大表。

sql-server optimization statistics sql-server-2014

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

如何查找分析服务器数据库的大小、名称等详细信息?

如何查找 Analysis Services 数据库的大小、名称和其他详细信息?

我有一台 Analysis Services 服务器,我可以在其中看到一个数据库。

我想知道这个数据库的大小和其他基本细节。

sql-server ssas

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

重叠的多列统计数据是多余的吗?

我运行了一个数据库引擎优化顾问会话DTA 来优化我的数据库。

DTA 提出了一些统计建议,但是,我注意到有些包含在其他中,例如在我下面的表 ProductIcon 中:

    CREATE STATISTICS [_dta_stat_172123954_1_2_3_4_5_12] 
ON [dbo].[ProductIcon]
([ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
    go

    CREATE STATISTICS [_dta_stat_172123954_11_1_2_3_4_5_12] 
ON [dbo].[ProductIcon]
([IconTypeID], [ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
    go
Run Code Online (Sandbox Code Playgroud)

这是表定义:

    IF OBJECT_ID('[dbo].[ProductIcon]') IS NOT NULL 
    DROP TABLE [dbo].[ProductIcon] 
    GO
    CREATE TABLE [dbo].[ProductIcon] ( 
    [ClassID]      INT                              NOT NULL,
    [SegmentID]    INT                              NOT NULL,
    [GroupID]      INT                              NOT NULL,
    [Tier1]        VARCHAR(10)                      NOT NULL,
    [LanguageID]   SMALLINT                         NOT NULL  CONSTRAINT [DF_ProductIcon_LanguageID] DEFAULT ((1)),
    [Image]        VARCHAR(50)                      NOT NULL  CONSTRAINT [DF_ProductIcon_Image] DEFAULT (''),
    [Descr] …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server optimization statistics

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

SSMS 列中的 Wingdings 字体

我确实想创建一个应该有复选标记和十字标记的列。

这是我的查询的一部分:

iif(order_details.order_status = 'Y',char(252),char(251)) as [completed?]
Run Code Online (Sandbox Code Playgroud)

在 SSMS 中执行查询后,我得到这样的输出 - 'ü', 'û'

但我假设,如果在 SSMS 中从当前字体更改为Wingdings,我将得到检查和交叉标记,并且每个输出都将在 SSMS 中更改。但我只想更改列 completed?

这是我的结果:

在此处输入图片说明

有人可以帮我打勾和十字标记吗?

sql-server ssms sql-server-2014

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

由于报表生成器评估版本,SQL Server 标准许可证被覆盖

我的一位同事今天打电话给我,告诉我在我们的一台服务器上,SQL Server 已停止工作。如果他试图运行管理工作室,它会抛出错误并说The evaluation period has expired...

在此处输入图片说明

但该人声称最初他在服务器上安装了 SQL Server 2008 R2 标准版(许可副本),但后来有人错误地在该机器上安装了 Report Builder 3.0 企业评估版,导致 SQL 服务器许可证过期。

我从来没有听说过这样的事情。我认为 Report Builder 是一个客户端应用程序,只要您连接的服务器获得许可,您就应该能够使用它,但它永远不会影响它所连接的服务器上的许可。

无论如何,我连接到服务器本身并开始查看 Windows 日志以检查 SQL Server 何时安装。

在大约一年前安装 SQL Server 时的窗口日志中,SQL Server 安装期间的所有 MsiInstaller 事件都指向一个目录

C:\appstore\2008 R2 Standard\Standard Edition\x86\setup\.....
Run Code Online (Sandbox Code Playgroud)

我认为这表明它最初安装的是标准版,但在安装完成并首次启动sql server服务后,Windows日志显示以下内容:

在此处输入图片说明

问题 1

我的结论是正确的,即使这个人认为他安装了标准版的 sql server,它实际上是 sql server 的企业评估版??

问题2

报表生成器的企业评估版是否可能影响已安装的 SQL Server 标准的许可证并导致其过期?

sql-server sql-server-2008-r2

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