标签: t-sql

如何在TSQL中刷新PRINT缓冲区?

我在SQL Server 2005中有一个非常长时间运行的存储过程,我正在尝试调试,而我正在使用'print'命令来执行此操作.问题是,我只是在我的sproc的最后从SQL Server获取消息 - 我希望能够刷新消息缓冲区并在sproc的运行时立即看到这些消息,而不是在结束.

t-sql sql-server printing

213
推荐指数
5
解决办法
9万
查看次数

在SQL Server 2008中正确使用事务

我有2个命令,需要它们都正确执行或者没有执行.所以我认为我需要一个交易,但我不知道如何正确使用它.

以下脚本有什么问题?

BEGIN TRANSACTION [Tran1]

INSERT INTO [Test].[dbo].[T1]
    ([Title], [AVG])
VALUES ('Tidd130', 130), ('Tidd230', 230)

UPDATE [Test].[dbo].[T1]
  SET [Title] = N'az2' ,[AVG] = 1
  WHERE [dbo].[T1].[Title] = N'az'

COMMIT TRANSACTION [Tran1]
GO
Run Code Online (Sandbox Code Playgroud)

INSERT命令已执行但UPDATE命令有问题.如果其中任何一个命令执行错误,我如何实现它来回滚这两个命令?

sql t-sql database sql-server transactions

213
推荐指数
3
解决办法
24万
查看次数

T-SQL CASE子句:如何指定WHEN NULL

我写了一个类似这样的T-SQL语句(原始的一个看起来不同但我想在这里给出一个简单的例子):

SELECT first_name + 
    CASE last_name WHEN null THEN 'Max' ELSE 'Peter' END AS Name
FROM dbo.person
Run Code Online (Sandbox Code Playgroud)

此语句没有任何语法错误,但case子句始终选择ELSE部分 - 如果last_name为null也是如此.但为什么?

我想要做的是联合first_name和last_name,但如果last_name为null,则整个名称变为null:

SELECT first_name +
   CASE last_name WHEN null THEN '' ELSE ' ' + last_name END AS Name 
FROM dbo.person
Run Code Online (Sandbox Code Playgroud)

你知道问题出在哪里吗?

t-sql

208
推荐指数
7
解决办法
43万
查看次数

我什么时候应该在SQL Server中使用分号?

在检查Web上的一些代码和SQL Server Management Studio生成的脚本时,我注意到某些语句以分号结束.

那么什么时候应该使用它?

t-sql sql-server

207
推荐指数
6
解决办法
15万
查看次数

在SQL Server的select语句中使用带有TOP的变量而不使其动态化

declare @top  int
set @top = 5
select top @top * from tablename
Run Code Online (Sandbox Code Playgroud)

可能吗?

或任何想法这样的逻辑(我不想使用动态查询)?

sql t-sql sql-server sql-server-2005

205
推荐指数
3
解决办法
9万
查看次数

201
推荐指数
6
解决办法
28万
查看次数

在SQL中将月号转换为月份名称函数

我有几个月在SQL Server中存储为1,2,3,4,... 12.我想将它们显示为1月,2月等.在SQL Server中是否有像MonthName(1)= January这样的函数?如果可能的话,我试图避免CASE声明.

sql t-sql sql-server sql-server-2005

201
推荐指数
13
解决办法
94万
查看次数

CTE,子查询,临时表或表变量之间是否存在性能差异?

在这个优秀的SO问题中,讨论了CTE和之间的sub-queries差异.

我想具体问一下:

在什么情况下,以下各项更有效/更快?

  • CTE
  • 子查询
  • 临时表
  • 表变量

传统上,我temp tables在开发中使用了很多stored procedures- 因为它们看起来比许多交织在一起的子查询更具可读性.

Non-recursive CTEs非常好地封装数据集,并且非常易读,但是在某些情况下可以说它们总能表现得更好吗?或者是否必须总是摆弄不同的选项才能找到最有效的解决方案?


编辑

我最近被告知,就效率而言,临时表是一个很好的首选,因为它们具有相关的直方图即统计数据.

sql t-sql sql-server subquery common-table-expression

200
推荐指数
4
解决办法
12万
查看次数

如何使用TSQL截断数据库中的所有表?

我有一个数据库的测试环境,我想在测试周期开始时用新数据重新加载.我对重建整个数据库不感兴趣 - 只需简单地"重新设置"数据.

使用TSQL从所有表中删除所有数据的最佳方法是什么?是否有可以使用的系统存储过程,视图等?我不想为每个表手动创建和维护truncate table语句 - 我希望它是动态的.

t-sql sql-server

197
推荐指数
7
解决办法
28万
查看次数

从数据库表生成类

如何从SQL Server的表中生成类?

我不是在谈论使用一些ORM.我只需要创建实体(简单类).就像是:

    public class Person 
    {
        public string Name { get;set; }
        public string Phone { get;set; }
    }
Run Code Online (Sandbox Code Playgroud)

c# sql t-sql sql-server

197
推荐指数
10
解决办法
18万
查看次数