Tag: sql server

错误:“INSERT EXEC语句不能嵌套”和“不能在INSERT-EXEC语句中使用ROLLBACK语句”如何解决这个问题?

我有三个存储过程Sp1 , Sp2和Sp3 。 第一个( Sp1 )将执行第二个( Sp2 )并将返回的数据保存到@tempTB1 ,第二个将执行第三个( Sp3 )并将数据保存到@tempTB2 。 如果我执行Sp2 ,它将工作,并将从Sp3返回我所有的数据,但问题出在Sp1 ,当我执行它时,会显示以下错误: INSERT EXEC语句不能嵌套 我试图改变execute Sp2的地方,它显示我另一个错误: 在INSERT-EXEC语句中不能使用ROLLBACK语句。

INSERT INTO与SELECT INTO

有什么区别使用 SELECT … INTO MyTable FROM… 和 INSERT INTO MyTable (…) SELECT … FROM …. ? 从BOL [ INSERT , SELECT … INTO ],我知道使用SELECT … INTO将在默认文件组中创build插入表(如果它尚不存在),并且此语句的日志logging取决于恢复数据库的模型。 哪种说法更可取? 还有其他的性能影响? SELECT … INTO通过INSERT INTO …的好用例是什么? 编辑:我已经表明,我知道那个SELECT INTO …创build一个表,它不存在。 我想知道的是SQL包含这个语句的原因是什么? 它是在插入行后面做一些不同的事情,还是只是在CREATE TABLE和INSERT INTO之上的语法糖。

我如何在SQL Server中同时将数据插入到两个表中?

假设我的表结构如下所示: CREATE TABLE [dbo].[table1] ( [id] [int] IDENTITY(1,1) NOT NULL, [data] [varchar](255) NOT NULL, CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC) ) CREATE TABLE [dbo].[table2] ( [id] [int] IDENTITY(1,1) NOT NULL, [table1_id] [int] NOT NULL, [data] [varchar](255) NOT NULL, CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC) ) 第一个表的[id]字段对应于第二个表的[table1_id]字段。 我想要做的是在一个事务中将数据插入到两个表中。 现在我已经知道如何通过执行INSERT-SELECT-INSERT来做到这一点,如下所示: BEGIN TRANSACTION; DECLARE @id [int]; […]

什么代表在SQL Server的双重?

我有一些在C#的属性是double ,我想将它们存储在SQL Server的表中,但注意到没有doubletypes,那么最好使用什么, decimal或float ? 这将存储经度和纬度值,所以我需要最准确的精度。 感谢迄今的回应。

为什么我应该使用int而不是一个字节或C#中的短

关于这个问题,我find了几条线索。 大多数人似乎赞成在他们的c#代码中使用int,即使一个字节或smallint会处理数据,除非它是一个移动应用程序。 我不明白为什么。 将C#数据types定义为数据存储解决scheme中的相同数据types是否更有意义? 我的前提:如果我正在使用types化的数据集,Linq2SQL类,POCO,这种或那种方式,我会遇到编译器数据types转换问题,如果我不保持我的数据types跨我的层同步。 我真的不喜欢做System.Convert,因为在c#代码中使用int更容易。 我总是使用任何最小的数据types来处理数据库中的数据以及代码,以保持我的数据库接口干净。 所以,我敢打赌,我的C#代码中的75%是使用字节或短而不是int,因为这是数据库中的内容。 可能性:这是否意味着大多数在代码中使用int的大多数人也使用int数据types作为它们的sql存储数据types,并且可能不关心数据库的整体大小,还是在代码中执行system.convert? 为什么我在乎:我一直在自己的工作,我只是想熟悉最佳实践和标准的编码惯例。

SQL Server 2008空string与空间

我今天早上遇到了一些奇怪的事情,并认为我会提交评论。 有人可以解释为什么下面的SQL查询打印“平等”对SQL 2008运行时。数据库兼容性级别设置为100。 if '' = ' ' print 'equal' else print 'not equal' 这返回0: select (LEN(' ')) 它似乎是自动修剪的空间。 我不知道在以前的SQL Server版本中是否出现这种情况,而且我不再有任何testing。 我碰到这个,因为生产查询返回不正确的结果。 我无法在任何地方find这种行为。 有没有人有这方面的任何信息?

通过searchSQL Server Management Studio 2008中的所有表来查找string

有没有办法在SQL Server Management Studio 2008中的数据库的所有表中searchstring? 我想searchstring说john 。 结果应该显示包含john的表格及其各自的行。

sql查询返回两个表之间的差异

我试图比较两个表,SQL Server来validation一些数据。 我想从两个表中返回所有的行,其中数据是在一个或另一个。 本质上,我想显示所有的差异。 我需要检查这三个数据,名字,姓氏和产品。 我对SQL相当陌生,看起来很多我发现的解决scheme都是复杂的。 我不必担心NULL。 我开始尝试这样的事情: SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data] WHERE ([First Name] NOT IN (SELECT [First Name] FROM [Real Data])) 尽pipe如此,我仍然遇到了麻烦。 谢谢! 编辑: 基于@treaschf的答案,我一直在尝试使用以下查询的变体: SELECT td.[First Name], td.[Last Name], td.[Product Name] FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d ON td.[First […]

为什么在创build索引时使用INCLUDE子句?

在参加70-433考试时,我注意到您可以通过以下两种方式之一创build一个覆盖指数。 CREATE INDEX idx1 ON MyTable (Col1, Col2, Col3) – 要么 – CREATE INDEX idx1 ON MyTable (Col1) INCLUDE (Col2, Col3) INCLUDE子句对我来说是新的。 为什么要使用它,以及在确定是否创build一个包含INCLUDE子句的覆盖索引时,您会提出哪些build议?

如何杀死当前与SQL Server 2005数据库的所有连接?

我想重命名一个数据库,但不断得到错误,“不能独占locking”的数据库,这意味着有一些连接(S)仍然活跃。 我怎样才能杀死所有连接到数据库,以便我可以重命名它?