Questions tagged «t-sql»

Transact-SQL(T-SQL)是Microsoft SQL Server和SAP的Sybase使用的SQL的方言。

2
列出SQL Server实例启动参数
我有一台刚刚重启的服务器,并使用以下命令验证了哪个跟踪标志处于活动状态DBCC TRACESTATUS: 跟踪标志:3688功能:删除错误日志中有关已启动和已停止跟踪的消息 在这里,您可以看到每个跟踪标志的作用。 旗3688 启动参数如下: 题: 如何通过T-SQL查找SQL Server服务的启动参数是什么?

1
我想在不切换数据库的情况下向另一个数据库中的角色添加用户/登录
我在具有角色的“新”数据库中mynewdb具有角色/登录名"emailsender"。我已经编写了一个配置文件的脚本sp_send_dbmail,现在正在尝试编写脚本以将登录名添加到中DatabaseMailUserRole,msdb并且似乎在转圈。重要的是,我想在中运行更新脚本mynewdb。我知道我可以SSMS用来做到这一点。问题是: 如何编写脚本,将用户T-SQL从mynewdb数据库添加到角色中而无需切换到msdb?

1
CASE语句中的空值
在学习70-461考试时,我正在玩SSMS中的一些东西,以学到更多知识,并且遇到了一些麻烦。我正在尝试创建一个表以供使用,因此我不必更改/删除AdventureWorks或TSQL2012数据库中任何已创建的表。在实际创建要使用的表之前,我已经创建了一个临时表来测试我的代码,这是我用来在表中插入值的代码: DECLARE @i INT = 1 WHILE @i < 10 BEGIN INSERT INTO #TestEmployeeCountry VALUES ( SUBSTRING('ABCDEFGHIJKLMNOP', @i, 1), CASE (SELECT ABS(CHECKSUM(NEWID()))%10 +1) WHEN 1 THEN 'USA' WHEN 2 THEN 'CANADA' WHEN 3 THEN 'MEXICO' WHEN 4 THEN 'UK' WHEN 5 THEN 'FRANCE' WHEN 6 THEN 'SPAIN' WHEN 7 THEN …

3
当存储过程可以由不同的用户同时运行时,是否建议使用临时表?
我正在研究一种从活动目录检索objectGUID的存储过程。我将结果存储在临时表中,然后在输出参数中返回该值以用于其他进程。将通过不同的存储过程以及Web应用程序PHP,ASP Classic和ASP.Net调用SP。 我在这里读到(关于临时表): 如果在存储过程中创建,则它们将在存储过程完成时销毁。此外,任何特定临时表的范围都是创建该临时表的会话。表示仅对当前用户可见。多个用户可以创建一个名为#TableX的临时表,并且同时运行的任何查询都不会相互影响-他们将保持自主事务,而这些表保持自主对象。您可能会注意到我的示例临时表名称以“#”符号开头。 听起来我很高兴,但我想获得一些建议,以确保没有我不知道的陷阱。这是SP。 提前致谢。 CREATE PROCEDURE stp_adlookup @user varchar(100), @objectGUID varbinary(256) OUTPUT AS SET NOCOUNT ON; DECLARE @qry char(1000) CREATE TABLE #tmp( objectGUID nvarchar(256) ) SET @qry = 'SELECT * FROM openquery(ADSI, '' SELECT objectGUID FROM ''''LDAP://mydomaincontroller.com'''' WHERE sAMAccountName = ''''' + @user + ''''' '')' INSERT INTO …


2
使用COALESCE(…)优化子查询的选择
我在应用程序中使用的视图很大。我认为我已经缩小了性能问题,但是不确定如何解决。视图的简化版本如下所示: SELECT ISNULL(SEId + '-' + PEId, '0-0') AS Id, *, DATEADD(minute, Duration, EventTime) AS EventEndTime FROM ( SELECT se.SEId, pe.PEId, COALESCE(pe.StaffName, se.StaffName) AS StaffName, -- << Problem! COALESCE(pe.EventTime, se.EventTime) AS EventTime, COALESCE(pe.EventType, se.EventType) AS EventType, COALESCE(pe.Duration, se.Duration) AS Duration, COALESCE(pe.Data, se.Data) AS Data, COALESCE(pe.Field, se.Field) AS Field, pe.ThisThing, se.OtherThing …


1
多次创建和删除#SomeTable是“合法的”吗?
我已经将代码分类为“连贯的块”,可以一遍又一遍地插入较长的“配置脚本”中,而我使用的模式之一是: CREATE TABLE #WidgetSetting ( WidgetID bigint not null, Name nvarchar(100) not null, Value nvarchar(max) not null, CreateDate datetime not null ) INSERT VALUES MERGE TABLES DROP TABLE #WidgetSetting 但是现在SSMS抱怨到下次CREATE TABLE火灾时该对象已经存在。是什么赋予了? 我认为很明显,我将不得不在脚本开始时声明一次表,然后截断而不是删除,但是自然地,令人沮丧的是,无法仅删除表并再次使用相同的名称。

2
非聚集索引-键和非键
我只想确保我在这些概念上走的正确,所以任何反馈将不胜感激。 这是我根据刚刚经过优化的查询通过反复试验并阅读MSDN文档而得出的理论。 查询 DECLARE @pic_id int SET pic_id = 1 SELECT ROW_NUMBER() OVER (ORDER BY pic_date desc) AS row_num, * FROM tbl_pics WHERE deleted = 0 AND map_id = 1 AND (hidden = 0 OR pic_id = @pic_id) 索引 CREATE NONCLUSTERED INDEX [IX_tbl_pics] ON [dbo].[tbl_pics] ( [map_id] ASC, [deleted] ASC, …

3
使用Row_Number查找连续的行数
我有这列整数表示信号的出现,我试图添加一列来显示连续行的计数 如果我的数据看起来像这样 724 727 728 733 735 737 743 747 749 具有连续行计数列的结果数据将如下所示 724 1 727 1 728 2 729 3 735 1 737 1 743 1 744 2 748 1 我已经使用循环功能完成了此操作,但正在尝试使用cte进行查找。这是我最近尝试的一个示例 DECLARE @d TABLE ( signal INT ) INSERT INTO @d SELECT 724 UNION SELECT 727 UNION SELECT 728 UNION …

2
没有参数的EXEC()和sp_executesql之间的区别?
我刚刚了解了新的sp_executesql存储过程。我喜欢这样一种事实,那就是可以在SQL Server中执行参数化的代码。 但是,我想知道没有任何参数时使用sp_executesql存储过程与直接调用EXEC之间有什么区别。另外,有性能暗示吗? exec('select * from line_segment') exec sp_executesql N'select * from line_segment' 此外,2005年和2008年之间是否有区别?还是它们处理这些问题相同?

3
什么时候绝对需要程序查询?
我知道我们倾向于不惜一切代价避免SQL Server中的游标和循环,但是在某些情况下您绝对需要过程查询,而基于集合的查询却不会为您提供结果? 我了解两者之间的区别,只是我从未遇到过需要使用游标的情况。我想知道是否有这种情况。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.