タグ付けされた質問 「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が、ログインをDatabaseMailUserRoleinに追加するスクリプトを作成しようとしていますが、msdb円を描いて回っているようです。重要なのは、更新スクリプトをで実行したいことですmynewdb。私SSMSはこれを行うために使用できることを知っています。質問は: に切り替えずにT-SQL、mynewdbデータベースからのロールにユーザーを追加するスクリプトを作成するにはどうすればよいmsdbですか?

1
CASEステートメントのnull値
私は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
ストアドプロシージャを異なるユーザーが同時に実行できる場合は、一時テーブルを使用することをお勧めしますか?
ActiveGUIDからobjectGUIDを取得するストアドプロシージャに取り組んでいます。結果を一時テーブルに格納し、他のプロセスで使用するために出力パラメーターに値を返します。SPは、さまざまなストアドプロシージャ、およびWebアプリケーションのPHP、ASP Classic、ASP.Netから呼び出されます。 私はそれをここに読んだ(一時テーブルに関して): ストアドプロシージャ内で作成された場合、それらはストアドプロシージャの完了時に破棄されます。さらに、特定の一時テーブルのスコープは、それが作成されたセッションです。つまり、現在のユーザーにのみ表示されます。複数のユーザーが#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を複数回作成および削除することは「合法」ですか?
私のコードは「コヒーレントブロック」として分離されており、長い「構成スクリプト」に何度も挿入できます。使用しているパターンの1つは次のとおりです。 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を使用して連続した行数を見つける
信号の発生を表すintのこの列があり、連続する行の数を示す列を追加しようとしています 私のデータがこのように見える場合 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内でカーソルとループをあらゆるコストで回避する傾向があることは知っていますが、手続き型クエリが絶対に必要で、セットベースのクエリでは結果が得られない状況は何ですか? 2つの違いを理解していますが、カーソルを使用する必要がある状況に至ったことがありません。そのような状況があるのだろうか。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.