这种死锁类型的可能原因是什么?(一般不是死锁)
锁定通讯缓冲区资源
此指示的系统是否内存不足且缓冲区计数超出限制?
详细错误:
事务(进程 ID 59)在与另一个进程的锁定通信缓冲区资源上发生死锁,并已被选为死锁牺牲品。重新运行事务
首先要做的事情是:我将 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
尝试将备份还原到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)版本兼容的备份?
好的,所以我有一份报告进行了本周与上周的比较,我们的客户注意到他们的数据是“时髦的”。经过进一步调查,我们发现它没有按照 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 2012 上运行,我们在最终交付之前交付了一些测试查询以进行测试,但是:
“CONCAT”不是可识别的内置函数名称。
我知道这CONCAT()是 SQL Server 2012 中引入的一个新的内置函数,这一切都很好,但是我被要求回滚我的更改以使这个 2008R2 兼容,打着“执行查询的用户可能不具有要执行的 Transact-SQL 权限。” 所以我只是证明我的观点,客户端很可能在 DEV 中安装的 SQL Server 版本与在 PROD 中安装的版本不同。
我找不到任何关于专门拒绝SELECT/EXECUTE内置标量值函数的权限的信息,但是否有可能,如果是这样,用户是否仍会收到相同的错误文本?
当涉及到 dbo 架构时:
为什么以下查询返回无限行?我本来希望该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)
使用 SQL 2008 构建的数据库文件与 2005 不兼容。有解决办法吗?
这个问题确实被证明是一个棘手的问题(而且很烦人)。
在 SQL Server Management Studio 2008 中,直到几天前,我的 IntelliSense 运行良好。然后突然就停了下来。在工具栏菜单上启用的图标,在工具 -> 选项 -> 文本编辑器 -> T-SQL -> IntelliSense 下,它表示它已在那里启用。
我曾尝试使用 Ctrl-Shft-R 刷新 IntelliSense 缓存,但这也不起作用。
任何想法我的智能感知发生了什么以及我需要做什么才能恢复它?
将数据库更改从开发环境迁移到 QA 到生产环境的好方法是什么?目前我们:
问题在于它非常手动。如果开发人员忘记了,它依赖于开发人员记得附加 sql 或同行评审员捕获它。有时,最终发现问题的是测试人员或 QA 部署人员。
第二个问题是,如果两个单独的任务更改同一个数据库对象,您有时最终需要手动协调更改。这可能只是它的方式,但似乎仍然应该有一些“标记”这些问题或其他东西的自动方式。
我们的设置:我们的开发商店充满了具有丰富数据库经验的开发人员。我们的项目非常面向数据库。我们主要是一家 .NET 和 MS SQL 商店。目前我们正在使用 MS TFS 工作项来跟踪我们的工作。这对于代码更改非常方便,因为它将更改集链接到工作项,因此我可以准确地找出在迁移到 QA 和生产环境时需要包含哪些更改。我们目前没有使用 DB 项目,但将来可能会切换到该项目(也许这是答案的一部分)。
我非常习惯于我的源代码控制系统为我处理这样的事情,并希望我的 SQL 也有同样的事情。
sql-server-2008 ×10
sql-server ×7
ado.net ×1
backup ×1
concat ×1
deadlock ×1
except ×1
intellisense ×1
process ×1
recursive ×1
restore ×1
schema ×1