标签: sql-server

SQL Server 死锁图 - 表、页或行锁?

有没有办法破译死锁图中的锁是表级、页级还是行级?我从图中获得了我需要的所有信息,包括隔离级别 (2),但我也很想知道这一点。

感谢任何能提供帮助的人!

sql-server deadlock

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

什么是残差谓词?

虽然我可以在MSDN 上在线找到谓词的定义:

是一个计算结果为 TRUE、FALSE 或 UNKNOWN 的表达式。谓词用于 WHERE 子句和 HAVING 子句的搜索条件、FROM 子句的连接条件以及其他需要布尔值的结构。

我一直无法找到残差谓词的定义。什么是残差谓词?

sql-server terminology

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

SQL Server 中是否有用于编程 ETL 的标准语言/接口?

我目前正在为我们的数据仓库创建 ETL。我们正在使用 SSIS 2008,但我们遇到了问题,其中最大的问题是重用组件的困难。我们为每个表都有单独的包,每个包都将来自父包的许多变量作为输入。当我们对这些输入变量进行更改时,我们需要进入每个包(我们现在有 15 个左右,但这个数字会显着增加)并修改包以处理这些更改。还有其他问题,包括无法为我们的提取运行任意 SQL,日志记录能力差等。

如果有一种方法可以在代码中开发我们的 ETL,实现代码重用、公共库、更好的单元测试等,那么整个过程会更加健壮。SQL Server是否有事实上的标准 ETL 语言/API?我希望尽可能避免使用 GUI 工具。

编辑:我应该提到我的背景。我不是 DBA,也没有接受过正式(或非正式)的 DBA 培训,我基本上已经了解了这些东西,所以很有可能我正试图用 SSIS 做不适当的事情或接近这个 ETL从错误的角度投射。此外,我目前受雇于州政府,因此任何需要购买新软件包的解决方案都不可能实现。


这是我们的任务之一。我们使用单个 SSIS 包来加载仓库中的每个表。每个 Fact 包和 Dimension 包大体上是一样的,它们只是在

  • 从源数据库中提取
  • 数据流中的操作
  • 合并到目标表

我希望能够做什么(我发现在 SSIS 中很难做到)

  • 从文本文件加载提取查询。当开发人员编写和测试他们的提取查询时,我不应该在 SSIS 运行之前以任何方式操作他们的查询,我不应该将查询剪切并粘贴到 DB 源对象中。
  • 单独测试每个组件。我应该能够独立于其他表负载,独立测试单个表的完整 ETL 过程。
  • 在一处修改共享逻辑,而不必编辑每个单独的包。每个包都以相同的方式将数据加载到审计表中,如果我想更改加载的审计数据,我不想编辑所有 15 个包(随着时间的推移,这个数字会变得更大)。

如果通过正确使用共享代码以编程方式完成,整个过程感觉会更容易实现并且更健壮。

sql-server etl

10
推荐指数
2
解决办法
1768
查看次数

安全永久删除数据库的最佳做法是什么?

我们有一个“有机”的环境,这意味着人们在代码上堆积了十年,而几乎没有监督或文档。我使用的服务器有几个我认为不再使用的数据库;我很想删除它们,只留下我实际使用的三个。

在鲁莽的极端情况下,我可以禁用这些数据库并等待有人尖叫;另一方面,我可以让它们永远运行“以防万一”。在确定是否正在使用服务器方面,您发现哪些步骤很有价值,以及如何使用?

此外,您建议采取哪些步骤来确保在禁用系统的过程中,它们在一段时间内保持方便地可逆(例如,重命名对象而不是彻底删除它们)?

谢谢!

sql-server delete maintenance

10
推荐指数
2
解决办法
2127
查看次数

将加密的数据库恢复到另一台服务器

我使用的是在 SQLServer 2008 上运行的产品。可以理解,提供它的公司不提供 SQLServer 支持。当我安装产品时,我指定了一个密码来加密数据库。我想在另一台服务器上运行该产品的另一个副本以进行测试。我已将数据库恢复到另一台服务器并在另一台服务器上安装了该产品。当我安装它时,我提供了相同的密码,然后从主服务器恢复了一个备份。但是我收到错误消息:

System.Data.SqlClient.SqlException: An error occurred during decryption.
Run Code Online (Sandbox Code Playgroud)

从产品。我可以使用 SQLServer Management Studio 访问这些表。

我试过这个:

在第一台服务器上:

CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff'

BACKUP CERTIFICATE  cert1 TO FILE = 'd:\backup\cert1.dat' 
WITH PRIVATE KEY 
(
ENCRYPTION BY PASSWORD = 'mypassword',
FILE = 'd:\backup\cert1_privatekey.dat'
)
Run Code Online (Sandbox Code Playgroud)

在第二台服务器上:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mypassword'

CREATE CERTIFICATE cert1 FROM FILE = 'd:\cert1.dat'
WITH PRIVATE KEY
(
FILE = 'd:\cert1_privatekey.dat',
DECRYPTION BY PASSWORD = 'mypassword'
)
Run Code Online (Sandbox Code Playgroud)

我也在第二台服务器上试过这个:

alter …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server backup restore

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

SQL Select 执行时间过长

这是从临时表中进行的简单选择,在其主键上加入现有表,两个子选择使用 top 1 引用连接表。

在代码中:

SELECT
    TempTable.Col1,
    TempTable.Col2,
    TempTable.Col3,
    JoinedTable.Col1,
    JoinedTable.Col2,
    (
        SELECT TOP 1
            ThirdTable.Col1 -- Which is ThirdTable's Primary Key
        FROM
            ThirdTable
        WHERE
            ThirdTable.SomeColumn = JoinedTable.SomeColumn
    ) as ThirdTableColumn1,
    (
        SELECT TOP 1
            ThirdTable.Col1 -- Which is also ThirdTable's Primary Key
        FROM
            ThirdTable
        WHERE
            ThirdTable.SomeOtherColumn = JoinedTable.SomeColumn
    ) as ThirdTableColumn2,
FROM
    #TempTable as TempTable
LEFT JOIN
    JoinedTable
ON (TempTable.PKColumn1 = JoinedTable.PKColumn1 AND 
    TempTable.PKColumn2 = JoinedTable.PKColumn2)
WHERE
    JoinedTable.WhereColumn IN  (1, 3)
Run Code Online (Sandbox Code Playgroud)

这是我的查询的精确副本。

如果我删除两个子选择,它运行得很好而且很快。通过两个子选择,我每秒得到大约 100 条记录,这对于这个查询来说非常慢,因为它应该返回近一百万条记录。

我已经检查过是否每张表都有一个主键,他们都有。它们都有重要列的索引和统计信息,就像那些 WHERE 子句中的那些,以及 JOIN …

sql-server-2005 sql-server query statistics

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

SQL Server 中的事务日志会自动收缩吗?

当 SQL Server 数据库处于 SIMPLE 模式时,您不必关心事务日志 bakcups。但是在 SIMPLE 模式下,事务日志似乎会像在 FULL 模式下一样增长。是否会在某个时间点自动截断?还是我必须手动截断/缩小它?

sql-server-2008 sql-server backup shrink transaction

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

ORDER BY CASE 表达式出现“转换失败”错误

我有以下存储过程,当我将“OrderBy”设置为“OrderNumber”时,该过程非常有效。

我收到以下错误:将 nvarchar 值“SK11270”转换为数据类型 int 时转换失败。

(SK11270 是 OrderNumber 列中的一个值,即 nvarchar(50))

如果我对任何其他 OrderBy 列运行相同的查询,它工作正常。

我完全迷失了,我的头很痛。任何人都可以看到会导致此问题的任何明显内容吗?

提前感谢您的任何想法...

富有的

这有效:

sp_jobs '1','20','','JobNumber','ASC','97','True','True','True','True','True','True','True','True','True','False','True','False','True','False','0'

这不会:
sp_jobs '1','20','','OrderNumber','ASC','97','True','True','True','True','True','True','True','True','True','False','True','False','True','False','0'

PROCEDURE [dbo].[sp_Jobs] 

@PageNumber int,
@PageSize int,
@FilterExpression varchar(500),
@OrderBy varchar(50),
@OrderDirection varchar(50),
@CustomerID int,
@ShowNotSet bit,
@ShowPlaced bit,
@ShowProofed bit,
@ShowReProofed bit,
@ShowApproved bit,
@ShowOnTime bit,
@ShowLate bit,
@ShowProblem bit,
@ShowCompleted bit,
@ShowDispatched bit,
@ShowUnapproved bit,
@ShowClosed bit,
@ShowReturned bit,
@ShowNoStock bit,
@UserID int

WITH RECOMPILE 

AS

BEGIN
WITH    Keys 
AS (SELECT TOP (@PageNumber * @PageSize) ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures

10
推荐指数
2
解决办法
7167
查看次数

您可以在 SQL Server 实例上查看哪些性能计数器来确定它的性能和整体健康状况?

我是埃因霍温 Fontys 大学的学生,我目前正在进行一系列采访以帮助开发 SQL Server 工具,我想从该领域的专家那里得到反馈。

我的问题之一是:

您可以在 SQL Server 实例上查看哪些性能计数器来确定它的性能和整体健康状况?

特别是我对好变坏时的阈值感兴趣。

Jamil Young 埃因霍温 荷兰

performance sql-server

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

DTA 建议创建统计信息

我刚刚通过 DTA 运行了一个 T-SQL 查询,其中一项建议是在作为 SQL 代码文件中许多查询的一部分的列之一上创建统计信息。

我的问题是,统计数据究竟如何帮助提高性能?

sql-server-2008 sql-server statistics tuning

10
推荐指数
2
解决办法
3313
查看次数