Tag: sql server

在线SQL语法检查符合多个数据库

是否有任何网站可用于validation符合多个数据库的语法? 例如:如果我有一个“使用”关键字的SQL语句,那么该网站应该抛出一个错误,说'使用'关键字是保留在MYSQL?

源代码pipe理中的存储过程/数据库模式

你们是否在你select的源代码pipe理系统中跟踪存储过程和数据库模式? 当你做一个改变(添加一个表格,更新一个存储过程,你如何将改变到源代码控制? 我们在工作中使用SQL Server,并且我已经开始使用darcs进行版本控制,但是我会对一般策略以及任何方便的工具感到好奇。 编辑:哇,谢谢所有伟大的build议,家伙! 我希望我可以select多个“可接受的答案”!

使用INSERT INTO插入多个值(SQL Server 2005)

在SQL Server 2005中,我试图找出为什么我无法将多个字段插入到表中。 以下查询插入一个logging,工作正常: INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') 但是,以下查询(指定多个值)失败: INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2') 我得到这个消息: Msg 102, Level 15, State 1, Line 5 Incorrect syntax near ','. 当我在SQL Sever Management Studio中查询INSERT的帮助时,他们的一个例子显示了我使用的“Values”语法(用括号括起来并用逗号分隔)。 我在SQL Server Management Studio中find的帮助文档看起来像SQL Server 2008,所以也许这就是插入不起作用的原因。 无论哪种方式,我不明白为什么它不会工作。

SQL Server“文本”数据types的WHERE子句

在SQL Server中将[CastleType]设置为数据types“text”,查询为: SELECT * FROM [Village] WHERE [CastleType] = 'foo' 我得到的错误: 数据typesTEXT和VARCHAR在等于运算符中是不兼容的。 我不能用WHERE子句查询这个数据types吗?

MS SQL比较date?

我有2个date(date时间): date1 = 2010-12-31 15:13:48.593 date2 = 2010-12-31 00:00:00.000 同一天,只是不同的时间。 使用<=比较date1和date2是不行的,因为date1时间。 所以date1 <= date2是错的,但应该是真的。 我可以比较他们只看年,月和日,所以他们是一样的吗? 它的SQL Server 2008。 谢谢 :)

在文本或ntext数据types上替代REPLACE

我需要更新/replacedatatable.column中的数据。 该表有一个名为Content的字段。 我正在使用REPLACEfunction。 由于列数据types是NTEXT ,SQL Server不允许使用REPLACE函数。 我无法更改数据types,因为此数据库是第三方软件表。 更改数据types将导致应用程序失败。 UPDATE [CMS_DB_test].[dbo].[cms_HtmlText] SET Content = REPLACE(Content,'ABC','DEF') WHERE Content LIKE '%ABC%' 我收到此错误: 消息8116,级别16,状态1,行1参数数据typesntext对replace函数的参数1无效。 我可以用T-SQL解决这个问题吗? 有人有一个例子如何阅读和循环? 由于这是一次转换,也许我可以改变到另一种types,但我恐怕我搞乱了数据。 有一个主键字段:名称:ID – 整数 – 这是一个身份….所以我也需要考虑这一点。 也许将身份设置为N临时。 请告知如何实现REPLACEfunction? 约。 3000条语句需要更新一个新的解决scheme。

SELECT FOR UPDATE与SQL Server

我正在使用隔离级别为READ_COMMITTED和READ_COMMITTED_SNAPSHOT=ON的Microsoft SQL Server 2005数据库。 现在我想用: SELECT * FROM <tablename> FOR UPDATE …以便在尝试访问同一行“FOR UPDATE”时阻止其他数据库连接。 我试过了: SELECT * FROM <tablename> WITH (updlock) WHERE id=1 …但是即使select“1”以外的其他连接也会阻止其他连接。 对于Oracle,DB2,MySql而言,执行SELECT FOR UPDATE的正确提示是什么? 编辑2009-10-03: 这些是创build表和索引的语句: CREATE TABLE example ( Id BIGINT NOT NULL, TransactionId BIGINT, Terminal BIGINT, Status SMALLINT ); ALTER TABLE example ADD CONSTRAINT index108 PRIMARY KEY ( Id ) CREATE […]

将标志存储为位掩码而不是使用关联表最好是什么时候?

我正在开发一个应用程序,用户有不同的权限来使用不同的function(例如读取,创build,下载,打印,批准等)。 预期权限列表不会经常更改。 我有几个如何将这些权限存储在数据库中的选项。 选项2会在哪些情况下更好? 选项1 使用关联表。 用户 —- UserId(PK) 名称 部 允许 —- PermissionId(PK) 名称 User_Permission —- UserId(FK) PermissionId(FK) 选项2 为每个用户存储一个位掩码。 用户 —- UserId(PK) 名称 部 权限 [Flags] enum Permissions { Read = 1, Create = 2, Download = 4, Print = 8, Approve = 16 }

数据库的事务日志已满

我有一个长期的运行过程,持有整个交易持续时间。 我无法控制这个执行的方式。 由于事务在整个持续时间内保持打开状态,所以当事务日志填满时,SQL Server不能增加日志文件的大小。 因此,该过程失败,错误"The transaction log for database 'xxx' is full" 。 我试图通过增加数据库属性中的事务日志文件的大小来防止这种情况,但是我得到了同样的错误。 不知道我应该尝试下一步。 该过程运行几个小时,所以玩试验和错误并不容易。 有任何想法吗? 如果有人感兴趣,该过程是Microsoft Dynamics CRM 4.0.的组织导入Microsoft Dynamics CRM 4.0. 有足够的磁盘空间,我们有简单的日志logging模式的日志,并已启动日志之前启动进程。 – = – = – = – = – – UPDATE – = – = – = – = – 感谢所有迄今为止的意见。 以下是导致我相信日志不会由于公开交易而增长的原因: 我收到以下错误… Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception: […]

INSERT与INSERT INTO

我一直在MS SQL中使用T-SQL一段时间,不知何故,当我不得不向表中插入数据时,我倾向于使用语法: INSERT INTO myTable <something here> 我知道关键字INTO在这里是可选的,我不必使用它,但不知何故,它成为我的情况下的习惯。 我的问题是: 使用INSERT语法与INSERT INTO什么关系? 哪一个完全符合标准? 它们在SQL标准的其他实现中是否都有效?