我对以下几点感到困惑: 存储过程和视图有什么区别? 什么时候应该使用存储过程,以及在SQL Server中何时使用视图? 视图允许创builddynamic查询,我们可以传递参数吗? 哪一个是最快的,基于哪一个比另一个更快? 视图或存储过程是否永久分配内存? 这是什么意思,如果有人说视图创build一个虚拟表,而程序创build一个材料表? 请让我知道更多的点,如果有的话。
在SQL Server 2005中,是否有一个一次性使用的概念,或在SQL脚本或存储过程中声明的本地函数? 我想在我正在编写的脚本中抽象出一些复杂性,但是它需要能够声明一个函数。 只是好奇。 谢谢!!
为了testing目的,我创build了一个开发环境表,有几个sp正在修复这个表。 现在我必须删除这个表格,并且确定所有引用这个表格的sp。 我很难find所有sp的列表。 请通过假设表名是'x'和数据库是sql server 2005来build议一些查询。
MySQL有这个令人难以置信的有用的REPLACE INTO SQL命令。 这可以很容易地在SQL Server 2005中模拟? 开始一个新的事务,做一个Select()然后UPDATE或INSERT和COMMIT总是有点痛苦,特别是当在应用程序中执行它,因此始终保持语句的两个版本。 我想知道是否有一个简单而通用的方法来实现这样的function到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中将[CastleType]设置为数据types“text”,查询为: SELECT * FROM [Village] WHERE [CastleType] = 'foo' 我得到的错误: 数据typesTEXT和VARCHAR在等于运算符中是不兼容的。 我不能用WHERE子句查询这个数据types吗?
我正在使用隔离级别为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 […]
作为构build过程的一部分,我们运行数据库更新脚本,因为我们将代码部署到4个不同的环境。 此外,由于相同的查询将被添加,直到我们将发布放入生产,它必须能够在给定的数据库上运行多次。 喜欢这个: IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[Table]')) BEGIN CREATE TABLE [Table] (…) END 目前我在部署/构build脚本中有一个create schema语句。 我在哪里查询模式的存在?
在不同的服务器上的两个不同的数据库中有两个表,我需要join他们,以便作出几个查询。 我有什么select? 我该怎么办?
我正在运行数据导入(使用C#/ Linq),自然我试图尽可能优化我的查询。 为此,我使用SQL Server Profiler在数据库上运行跟踪,跟踪由我的SQLlogin名(这是一个可以唯一归因于我的数据导入过程的名称)过滤。 奇怪的是,我的大部分SQL语句真的很快:) – 很less有查询甚至打破了1毫秒的标记。 但是,在所有查询之间的间隔是EventClass为“审计login”或“审计注销”的几行,而“审计注销”的持续时间可以达到一分钟! 这是否与我在我的导入中使用事务的事实有关? 如果是这样,是否有任何方法可以find哪些是最大的查询,所以我可以清理这些?