标签: sql-server

当IDENTITY_INSERT设置为OFF时,无法在表'table'中为identity列插入显式值

执行以下脚本时出现以下错误.什么是错误,以及如何解决?

Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)
Run Code Online (Sandbox Code Playgroud)

错误:

服务器:消息544,级别16,状态1,行1

当IDENTITY_INSERT设置为OFF时,无法在表'table'中为identity列插入显式值.

sql sql-server sybase

322
推荐指数
13
解决办法
68万
查看次数

SQL中是否有"LIKE"和"IN"的组合?

在SQL中(遗憾的是)LIKE由于数据库违反了几乎所有规范化规则,因此经常不得不使用" "条件.我现在无法改变它.但这与这个问题无关.

此外,我经常使用条件,例如WHERE something in (1,1,2,3,5,8,13,21)更好的可读性和SQL语句的灵活性.

在没有编写复杂的子选择的情况下,有没有可能将这两种方法结合起来?

我想要一些简单WHERE something LIKE ('bla%', '%foo%', 'batz%')而不是这样的东西:

WHERE something LIKE 'bla%'
OR something LIKE '%foo%'
OR something LIKE 'batz%'
Run Code Online (Sandbox Code Playgroud)

我在这里使用SQl Server和Oracle,但我很感兴趣,如果在任何RDBMS中都可以这样做.

sql t-sql sql-server oracle plsql

322
推荐指数
13
解决办法
43万
查看次数

什么代表sql server中的double?

我有一对夫妇在性C#这是double我想将这些存储在SQL Server中的表,但发现没有double类型,所以什么是最好的使用,decimal还是float

这将存储纬度和经度值,因此我需要最精确的精度.

感谢到目前为止的回复.

c# sql t-sql sql-server sql-server-2005

320
推荐指数
6
解决办法
32万
查看次数

设置NOCOUNT ON使用情况

灵感来自这个问题,对于SET NOCOUNT有不同的看法......

我们应该为SQL Server使用SET NOCOUNT ON吗?如果没有,为什么不呢?

它的作用编辑6,2011年7月22日

它会在任何DML之后抑制"​​xx行受影响"消息.这是一个结果集,当发送时,客户端必须处理它.它很小,但可以测量(见下面的答案)

对于触发器等,客户端将收到多个"受影响的xx行",这会导致某些ORM,MS Access,JPA等出现各种错误(参见下面的编辑)

背景:

一般接受的最佳实践(我想直到这个问题)是SET NOCOUNT ON在SQL Server中的触发器和存储过程中使用.我们在任何地方都使用它,快速谷歌显示大量的SQL Server MVP也同意.

MSDN表示这可能会破坏.net SQLDataAdapter.

现在,这对我来说意味着SQLDataAdapter仅限于完全简单的CRUD处理,因为它希望"n行受影响"消息匹配.所以,我不能用:

  • 如果EXISTS避免重复(没有行影响消息)注意:请谨慎使用
  • 什么不存在(预期行数较少)
  • 过滤掉琐碎的更新(例如,没有数据实际更改)
  • 之前进行任何表访问(例如记录)
  • 隐藏复杂性或denormlisation
  • 等等

在问题marc_s(谁知道他的SQL的东西)说不要使用它.这与我的想法不同(我认为自己在SQL方面也有一定的能力).

有可能我错过了一些东西(随意指出明显的东西),但你们有什么想法呢?

注意:我看到这个错误已经好几年了,因为我现在不使用SQLDataAdapter.

在评论和问题后编辑:

编辑:更多想法......

我们有多个客户端:一个可以使用C#SQLDataAdaptor,另一个可以使用Java中的nHibernate.这些可能会以不同的方式受到影响SET NOCOUNT ON.

如果您将存储过程视为方法,那么假设某些内部处理以某种方式为您自己的目的而工作则是不好的形式(反模式).

编辑2:触发器打破nHibernate问题,SET NOCOUNT ON无法设置

(不,它不是一个重复的这个)

编辑3:更多信息,感谢我的MVP同事

编辑2011年5月13日

如果没有指定,还会破解Linq 2 SQL吗?

编辑2011年6月14日

使用表变量打破JPA,存储过程:JPA 2.0是否支持SQL Server表变量?

编辑6:2011年8月15日

SSMS"编辑行"数据网格需要SET NOCOUNT ON:使用GROUP BY更新触发器

编辑2013年3月7日7:07

来自@RemusRusanu的更深入的细节:
SET NOCOUNT …

sql t-sql sql-server concurrency ado.net

320
推荐指数
7
解决办法
25万
查看次数

Stuff和'For Xml Path'在Sql Server中是如何工作的

表是:

+----+------+
| Id | Name |
+----+------+    
| 1  | aaa  |
| 1  | bbb  |
| 1  | ccc  |
| 1  | ddd  |
| 1  | eee  |
+----+------+
Run Code Online (Sandbox Code Playgroud)

所需输出:

+----+---------------------+
| Id |        abc          |
+----+---------------------+ 
|  1 | aaa,bbb,ccc,ddd,eee |
+----+---------------------+
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT ID, 
    abc = STUFF(
                 (SELECT ',' + name FROM temp1 FOR XML PATH ('')), 1, 1, ''
               ) 
FROM temp1 GROUP BY id
Run Code Online (Sandbox Code Playgroud)

此查询正常运行.但我只需要解释它是如何工作的,或者是否有其他或简短的方法来做到这一点.

我很难理解这一点.

sql database sql-server

320
推荐指数
5
解决办法
45万
查看次数

在SQL Server中将表从一个数据库复制到另一个数据库

我有一个名为foo的数据库和一个名为bar的数据库.我在foo中有一个名为tblFoobar的表,我想从数据库foo移动(数据和所有)到数据库栏.执行此操作的SQL语句是什么?

sql sql-server copy migrate database-table

319
推荐指数
7
解决办法
82万
查看次数

查询以列出所有存储过程

什么查询可以返回SQL Server数据库中所有存储过程的名称

如果查询可以排除系统存储过程,那将更有帮助.

t-sql sql-server

319
推荐指数
10
解决办法
57万
查看次数

我在SQL Server复制项目上收到"尝试加载具有不正确格式的程序"错误

确切的错误如下

无法加载文件或程序集"Microsoft.SqlServer.Replication,Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91"或其依赖项之一.尝试加载格式不正确的程序.

在最近两个月搬到另一个项目后,我最近又开始研究这个项目了.它以前工作得很好,我仔细检查了所有参考文献.

c# sql-server replication

317
推荐指数
7
解决办法
26万
查看次数

sql server无效的对象名称 - 但表列在SSMS表列表中

我正在尝试Stored Procedure为新创建的数据库创建一个.然而,SSMSintellisense不能识别已创建的表的一半以上.

例如,虽然在表格左下方列中我有一个表格dbo.Room,当我dbo.在新查询窗口中键入" "时,该表未列出,实际上只列出了37个表中的17个.

我可以看到intellisense列出的表与没有表的表之间没有区别.如果我手动输入dbo.Room,则会加下划线,错误为

无效的对象名称'dbo.Room'..

我在设置表时错过了什么吗?

更新:我已经尝试刷新表列表(几次)

sql-server ssms

315
推荐指数
9
解决办法
41万
查看次数

如何在SQL Server中使用级联删除?

我有2个表:T1和T2,它们是带有数据的现有表.我们在T1和T2之间有一对多的关系.当删除T1中的记录时,如何更改表定义以在SQL Server中执行级联删除,T2中的所有关联记录也将被删除.

他们之间存在外来约束.我不想删除表或创建触发器来删除T2.例如,当我删除员工时,所有审核记录也应该消失.

T1 - 员工,

Employee ID      
Name
Status
Run Code Online (Sandbox Code Playgroud)

T2 - 性能评测,

Employee ID - 2009 Review
Employee ID - 2010 Review
Run Code Online (Sandbox Code Playgroud)

sql-server cascading-deletes

315
推荐指数
6
解决办法
57万
查看次数