标签: sql-server-2008

SQL Server:锁定通信缓冲区资源上的死锁

这种死锁类型的可能原因是什么?(一般不是死锁)

锁定通讯缓冲区资源

此指示的系统是否内存不足且缓冲区计数超出限制?

详细错误:

事务(进程 ID 59)在与另一个进程的锁定通信缓冲区资源上发生死锁,并已被选为死锁牺牲品。重新运行事务

sql-server-2008 deadlock

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

使 SqlClient 默认为 ARITHABORT ON

首先要做的事情是:我将 MS SQL Server 2008 与兼容级别为 80 的数据库一起使用,并使用 .Net 的System.Data.SqlClient.SqlConnection.

出于性能原因,我创建了一个索引视图。因此,视图中引用的表的更新需要使用ARITHABORT ON. 但是,探查器显示 SqlClient 正在连接ARITHABORT OFF,因此对这些表的更新失败。

是否有使 SqlClient 使用的中央配置设置ARITHABORT ON?我能找到的最好方法是在每次打开连接时手动执行该操作,但是更新现有代码库以执行此操作将是一项相当大的任务,因此我很想找到更好的方法。

sql-server-2008 sql-server ado.net configuration compatibility-level

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

将备份还原到旧版本的 SQL Server

尝试将备份还原到SQL Server Express 2008数据库时,出现以下错误:

Restore failed for Server '...\SQLEXPRESS'.  (Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError: The database was backed up on a server running version
10.50.1600. 
That version is incompatible with this server, which is running version 10.00.2531. 
Either restore the database on a server that supports the backup, or use a backup 
that is compatible with this server. (Microsoft.SqlServer.Smo)
Run Code Online (Sandbox Code Playgroud)

有没有办法从 SQL Server Express 的较新(在我的情况下为 10.50.1600)版本中获取与旧(在我的情况下为 10.00.2531)版本兼容的备份?

sql-server-2008 sql-server backup restore

34
推荐指数
5
解决办法
14万
查看次数

ISO 周与 SQL Server 周

好的,所以我有一份报告进行了本周与上周的比较,我们的客户注意到他们的数据是“时髦的”。经过进一步调查,我们发现它没有按照 ISO 标准正确运行数周。我将此脚本作为测试用例运行。

SET DATEFIRST 1
SELECT DATEPART(WEEK, '3/26/13')
    , DATEPART(WEEK, '3/27/12')
    , DATEPART(WEEK, '3/20/12')
    , DATEPART(WEEK, '1/2/12')
SELECT DATEPART(ISO_WEEK, '3/26/13')
    , DATEPART(ISO_WEEK, '3/27/12')
    , DATEPART(ISO_WEEK, '3/20/12')
    , DATEPART(ISO_WEEK, '1/2/12')
Run Code Online (Sandbox Code Playgroud)

运行时我得到了这些结果。

结果集

我认为这很奇怪,所以我做了更多的挖掘,发现 SQL Server 将 1 月 1 日计算为一年的第一周,而 ISO 将 1 月的第一个星期日计算为一年的第一周。

这个问题最终有两个方面。问题1 这是为什么?问题 2 有什么方法可以改变这一点,这样我就不必修改我的所有代码以ISO_Week在任何地方使用?

sql-server-2008 sql-server

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

“CONCAT”不是可识别的内置函数名称

一位客户报告说他们在 SQL Server 2012 上运行,我们在最终交付之前交付了一些测试查询以进行测试,但是:

“CONCAT”不是可识别的内置函数名称。

我知道这CONCAT()是 SQL Server 2012 中引入的一个新的内置函数,这一切都很好,但是我被要求回滚我的更改以使这个 2008R2 兼容,打着“执行查询的用户可能不具有要执行的 Transact-SQL 权限。” 所以我只是证明我的观点,客户端很可能在 DEV 中安装的 SQL Server 版本与在 PROD 中安装的版本不同。

我找不到任何关于专门拒绝SELECT/EXECUTE内置标量值函数的权限的信息,但是否有可能,如果是这样,用户是否仍会收到相同的错误文本?

sql-server-2008 sql-server sql-server-2012 concat

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

应该避免 dbo 模式吗?

当涉及到 dbo 架构时:

  • 在创建数据库对象时避免使用 dbo 模式是最佳实践吗?
  • 为什么应该避免或应该避免 dbo 模式?
  • 哪个数据库用户应该拥有 dbo 模式?

schema sql-server-2008 sql-server best-practices

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

在递归公用表表达式中使用 EXCEPT

为什么以下查询返回无限行?我本来希望该EXCEPT条款终止递归..

with cte as (
    select *
    from (
        values(1),(2),(3),(4),(5)
    ) v (a)
)
,r as (
    select a
    from cte
    where a in (1,2,3)
    union all
    select a
    from (
        select a
        from cte
        except
        select a
        from r
    ) x
)
select a
from r
Run Code Online (Sandbox Code Playgroud)

我在尝试回答Stack Overflow 上的一个问题时遇到了这个问题

sql-server-2008 sql-server execution-plan recursive except

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

从 SQL Server 2008 降级到 2005

使用 SQL 2008 构建的数据库文件与 2005 不兼容。有解决办法吗?

sql-server-2005 sql-server-2008

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

IntelliSense 不工作,但已启用

这个问题确实被证明是一个棘手的问题(而且很烦人)。

在 SQL Server Management Studio 2008 中,直到几天前,我的 IntelliSense 运行良好。然后突然就停了下来。在工具栏菜单上启用的图标,在工具 -> 选项 -> 文本编辑器 -> T-SQL -> IntelliSense 下,它表示它已在那里启用。

我曾尝试使用 Ctrl-Shft-R 刷新 IntelliSense 缓存,但这也不起作用。

任何想法我的智能感知发生了什么以及我需要做什么才能恢复它?

sql-server-2008 sql-server intellisense

32
推荐指数
5
解决办法
13万
查看次数

是否有“最佳实践”类型的过程供开发人员遵循以进行数据库更改?

将数据库更改从开发环境迁移到 QA 到生产环境的好方法是什么?目前我们:

  1. 在 SQL 文件中编写更改脚本并将其附加到 TFS 工作项。
  2. 工作经过同行评审
  3. 当工作准备好进行测试时,SQL 在 QA 上运行。
  4. 作品经过 QA 测试
  5. 当工作准备好进行生产时,SQL 将在生产数据库上运行。

问题在于它非常手动。如果开发人员忘记了,它依赖于开发人员记得附加 sql 或同行评审员捕获它。有时,最终发现问题的是测试人员或 QA 部署人员。

第二个问题是,如果两个单独的任务更改同一个数据库对象,您有时最终需要手动协调更改。这可能只是它的方式,但似乎仍然应该有一些“标记”这些问题或其他东西的自动方式。

我们的设置:我们的开发商店充满了具有丰富数据库经验的开发人员。我们的项目非常面向数据库。我们主要是一家 .NET 和 MS SQL 商店。目前我们正在使用 MS TFS 工作项来跟踪我们的工作。这对于代码更改非常方便,因为它将更改集链接到工作项,因此我可以准确地找出在迁移到 QA 和生产环境时需要包含哪些更改。我们目前没有使用 DB 项目,但将来可能会切换到该项目(也许这是答案的一部分)。

我非常习惯于我的源代码控制系统为我处理这样的事情,并希望我的 SQL 也有同样的事情。

sql-server-2008 process source-control

31
推荐指数
2
解决办法
1763
查看次数