Questions tagged «sql-server-2008»

SQL Server 2008(主要版本10.00.xxxx)。请同时用sql-server标记。


6
将SqlClient默认设置为ARITHABORT ON
首先,第一件事:我将MS SQL Server 2008与兼容级别为80的数据库一起使用,并使用.Net的数据库进行连接System.Data.SqlClient.SqlConnection。 出于性能原因,我创建了索引视图。结果,需要使用对视图中引用的表进行更新ARITHABORT ON。但是,探查器显示SqlClient正在与进行连接ARITHABORT OFF,因此对这些表的更新失败。 是否有使SqlClient使用的中央配置设置ARITHABORT ON?我能找到的最好的方法是在每次打开连接时手动执行该操作,但是更新现有代码库来执行此操作将是一项相当大的任务,因此我渴望找到一种更好的方法。

4
如何确定负责“字符串或二进制数据将被截断”的列。
我使用从远程Pg数据库写入SELECT的代码自动生成一些查询,并将其插入本地SQL Server数据库中。但是,其中之一正在生成此错误: [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]字符串或二进制数据将被截断。(SQL-22001)[状态为22001现在01000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]该语句已终止。(SQL-01000)在。\ insert.pl第106行。 我如何找出哪个列正在生成该错误并且缺少输入的长度?有没有办法不用蛮力猜测所有内容varchar?

5
开发人员是否可以遵循“最佳实践”类型的流程来进行数据库更改?
什么是将数据库更改从开发环境迁移到质量保证到生产环境的好方法?目前,我们: 在SQL文件中编写更改脚本,并将其附加到TFS工作项。 这项工作经过同行评审 当工作准备好进行测试时,SQL将在QA上运行。 这项工作已经过质量检查 当工作准备好进行生产时,SQL将在生产数据库上运行。 问题在于这是非常手动的。它依赖于开发人员记住附加的sql或由开发人员忘记的peer-reviewer来捕获它。有时,最终是发现问题的测试人员或QA部署人员。 第二个问题是,如果两个单独的任务更改同一数据库对象,则有时最终需要手动协调更改。这可能只是事实,但似乎仍然应该有一些自动方式来“标记”这些问题或其他内容。 我们的设置:我们的开发车间充满了具有丰富数据库经验的开发人员。我们的项目非常面向DB。我们主要是.NET和MS SQL商店。当前,我们正在使用MS TFS工作项来跟踪我们的工作。这对于代码更改非常方便,因为它将更改集链接到工作项,因此我可以准确地找到在迁移到质量检查和生产环境时需要包括哪些更改。我们目前不使用数据库项目,但将来可能会切换到该项目(也许是答案的一部分)。 我非常习惯于我的源代码控制系统来照顾这样的事情,并且希望我的SQL拥有相同的事情。

1
SQL Server:在锁定通信缓冲区资源上死锁
这种死锁类型可能是什么原因?(一般不会出现死锁) 锁定通讯缓冲区资源 这是否表明系统内存不足并且缓冲区计数超出限制? 详细错误: 事务(进程ID 59)在锁定通信缓冲区资源上与另一个进程死锁,已被选择为死锁牺牲品。重新运行交易

8
IntelliSense不起作用,但已启用
事实证明,这个问题确实很棘手(而且很烦人)。 在SQL Server Management Studio 2008中,直到几天前,我的IntelliSense仍然运行良好。然后突然停了下来。在工具栏菜单上启用的图标,在“工具”->“选项”->“文本编辑器”->“ T-SQL”->“ IntelliSense”下,它表示已在此处启用。 我尝试使用Ctrl-Shft-R刷新IntelliSense缓存,但这也不起作用。 有什么想法可以解决我的IntelliSense以及我需要做些什么才能取回它?

5
将备份还原到旧版本的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 …

2
为什么GROUP BY语句中的通配符不起作用?
我正在尝试使以下SQL语句正常工作,但出现语法错误: SELECT A.*, COUNT(B.foo) FROM TABLE1 A LEFT JOIN TABLE2 B ON A.PKey = B.FKey GROUP BY A.* 在这里,A是一个有40列的宽表,如果可能的话,我想避免在GROUP BY子句中列出每个列的名称。我有很多这样的表,必须在这些表上运行类似的查询,因此我必须编写一个存储过程。解决此问题的最佳方法是什么? 我正在使用MS SQL Server 2008。


2
如果为正,则对所有项目求和。如果为负,则返回每个
我需要找到SUM()所有正值的方法,num并返回SUM()所有正数的值,并为每个负数返回单独的一行。下面是一个示例DDL: Create Table #Be ( id int , salesid int , num decimal(16,4) ) Insert Into #BE Values (1, 1, 12.32), (2, 1, -13.00), (3, 1, 14.00) , (4, 2, 12.12), (5, 2, 14.00), (6, 2, 21.23) , (7, 3, -12.32), (8,3, -43.23), (9, 3, -2.32) 这是我想要的输出(每个salesid SUM()和负数的正数返回单独的行): salesid num …

2
为什么我们需要在SQL Server中重建和重新组织索引
搜索互联网后,我找不到原因 为什么我们需要在SQL Server中重建和重新组织索引? 当我们重建和重组时,内部会发生什么? 网站上的一篇文章说: 当索引碎片大于40%时,应重建索引。当索引碎片在10%到40%之间时,应该重新组织索引。索引重建过程使用更多的CPU,并锁定数据库资源。SQL Server开发版本和企业版具有选项“联机”,可以在重建索引时将其打开。联机选项将在重建期间保持索引可用。 我不明白这一点,尽管它说WHEN要这样做,但是我想知道WHY我们是否需要重建和重组索引?


6
查询以报告磁盘空间分配和已用空间
对于一个应用程序,我们总共使用6个数据库,并且在所有6个自动增长的数据库中(通过SAN存储)我们只能共享4TB的空间。 我想为单个数据库写一个查询(报告),以指示SQL Server Management Studio中“任务”>“收缩”>“数据库”选项下的“当前分配的空间”和“可用的可用空间”属性。 然后,我想将这些数字转换为TB并汇总每个数据库,以大致估算出我们还剩下多少空间。可以通过T-SQL查询访问这些字段吗?如果是这样,查询将是什么样?


1
Varchar(max)字段会截断8000个字符后的数据
我有一个字段来存储一些数据,该字段声明为varchar(max)。据我了解,这应该存储2^31 - 1字符,但是当我输入一些超过8000个字符的内容时,它将切断其余字符。 我已经验证了所有数据都包含在我的更新语句中,并且该查询在其他任何地方都看起来不错,但是当我选择回退数据时,该查询已被切断。 当我在网站上显示数据时,以及使用SSMS时,数据都会被截断select content from table。 select DATALENGTH (content) from table 回到8000。 我使用此设置数据:update table set content = 'my long content' where id = 1。内容中确实包含很多HTML,但是我看不到这会引起问题。我可以看到我做的唯一的事情就是更换所有"有'',因为这是用户输入的内容(不记得我为什么现在)。 我确实设法通过删除内容中的所有单引号来使内容正确输入,所以我认为我的数据而不是数据库出现了一些奇怪的情况。 我应该对查询使用varchar(max)字段做一些特殊的事情吗? 使用:SQL Server 2008(10.50)64位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.