タグ付けされた質問 「sql-server-2012」

SQL Server 2012(メジャービルドバージョン11.00.xxxx)。sql-serverにもタグを付けてください。

2
ストアドプロシージャでのトランザクション
単一のトランザクションでUPDATEとINSERTを実行する必要があります。そのコードはそれ自体で問題なく機能しますが、簡単に呼び出して必要なパラメーターを渡すことができるようにしたいと思います。このトランザクションをストアドプロシージャにネストしようとすると、多くの構文エラーが発生します。 次のコードをカプセル化して簡単に呼び出せるようにするにはどうすればよいですか? BEGIN TRANSACTION AssignUserToTicket GO DECLARE @updateAuthor varchar(100) DECLARE @assignedUser varchar(100) DECLARE @ticketID bigint SET @updateAuthor = 'user1' SET @assignedUser = 'user2' SET @ticketID = 123456 UPDATE tblTicket SET ticketAssignedUserSamAccountName = @assignedUser WHERE (ticketID = @ticketID); INSERT INTO [dbo].[tblTicketUpdate] ([ticketID] ,[updateDetail] ,[updateDateTime] ,[userSamAccountName] ,[activity]) VALUES (@ticketID, 'Assigned ticket to …

2
変更の追跡を含むフルテキストカタログ:そのテーブルの変更追跡が有効になっていない場合、AUTOは自動的に更新されますか?
フルテキストインデックスを最新の状態に保つためのデータベーステーブルがあります。ただし、これが発生しているのはまったくわかりません(最後に表示されたログは手動でトリガーしたときだったため、ログにエラーはありません)。 これが私が見ているものです... テーブルの上に... これが自動的に行われない理由ですか?

2
データマート/倉庫でのタイムゾーンの処理
私たちはデータマート/倉庫のビルディングブロックを設計し始めており、すべてのタイムゾーンをサポートできる必要があります(私たちのクライアントは世界中から来ています)。オンライン(および本)でのディスカッションを読むと、一般的な解決策は、ファクトテーブルに日付と時刻の個別のディメンションとタイムスタンプを持つことです。 しかし、私が答えるのに苦労している質問は、動的なタイムゾーンの要件を考慮すると、日付と時刻のディメンションが実際にどのように役立つかです。時間ディメンションはもう少し理にかなっていますが、日付ディメンションで苦労しています。日付ディメンションの一般的な設計アプローチには、通常、曜日名、曜日、月名などのプロパティが含まれます。私が抱えている問題は、2013年12月31日火曜日の午後11時(UTC)が水曜日であることです。 、2014年1月1日、UTC + 2以降のすべてのタイムゾーン。 したがって、すべてのクエリ(およびレポート)でこれらすべてのタイムゾーン変換を行う必要がある場合、おそらく使用しない(これらのプロパティのように)これらのプロパティを保持して保存することの意味は何ですか?一部の人々は、タイムゾーンごとにファクト行を持つことを提案しますが、それは私にはばかげているようです。毎月何百万ものレコードを保存できる必要があります。 他の人は、タイムゾーンブリッジテーブルを使用することをお勧めします。これは、ある程度の意味がありますが、クライアントアプリとレポートが日付から簡単に理解できるはずのことを達成するための追加の複雑さと結合のようにも見えます(レポートは主にWebベースになります)日付の変換、表示、およびフォーマットを支援する無数のライブラリがあります)。 私が考えることができる唯一のことは、日付と時間でグループ化することの容易さとおそらくパフォーマンスですが、日付部分でグループ化することはどれほど悪いことですか(MS SQLを使用していますが、数百万の行をクエリすることになります)、または考慮する必要があります月曜日などのほとんどのリテラルはタイムゾーンが機能するときにあまり意味がないので、ほとんどの場合、時間、日、月、年の数以下の非常に単純な日付と時刻のディメンションですか?

2
UPDATEステートメントのOUTPUTをローカル変数に送る
私はこれをしたいと思います: DECLARE @Id INT; UPDATE Logins SET SomeField = 'some value' OUTPUT @Id = Id WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc これは可能ですか?ローカルテーブル変数を宣言してそこに出力を送信できることはわかっていますが、可能であればスキップすることをお勧めします


4
ジョブ、スケジュール、および次のスケジュールされた実行日時のリスト
ジョブ、スケジュール、および次のスケジュールされた実行日時のリスト ジョブ、スケジュール、次のスケジュールされた実行日時を一覧表示しようとしています。しかし、私は成功しているようには見えません。 sysjobactivity next_scheduled_run_dateがありますが、これは必要ですが、ジョブとスケジュールの両方に接続することはできません。 以外の方法がある場合は、そこにsysjobactivity案内してください。 SELECT sj.name AS jobName , ss.name AS scheduleName , sja.next_scheduled_run_date FROM msdb.dbo.sysjobs sj INNER JOIN msdb.dbo.sysjobactivity sja ON sja.job_id = sj.job_id INNER JOIN msdb.dbo.sysjobschedules sjs ON sjs.job_id = sja.job_id INNER JOIN msdb.dbo.sysschedules ss ON ss.schedule_id = sjs.schedule_id WHERE (sj.name LIKE 'xray%') AND (sja.next_scheduled_run_date > GETDATE())

3
MSSQLで開かれたトランザクションが長すぎるとどのような影響がありますか?
DBでトランザクションを開始し、それをコミットまたはロールバックするのを忘れた場合、どうなるのかと思っています。サーバーはダウンしますか?3日間放置したとしましょう。 他のユーザーが閉じられていないトランザクションがあることを知らなかったと仮定してそれを使用しているユーザーもいます(ユーザーがデータベースにデータを挿入していると仮定しましょう)。このアクションの結果は何ですか?

2
MAXDOP = 1、クエリヒントと並列処理のコストしきい値
インスタンスがMAXDOP1に設定されていて、クエリヒントを使用して特定のクエリを並列化できる場合、SQLは並列処理のコストしきい値を使用して、実際に並列化するかどうかを決定しますか? このリンクはCTFP MAXDOPが1の場合は無視されることを示唆していますが、私はこの特定の情報を掘り下げることができませんでした。これは、クエリのヒントなしでは意味がありませんMAXDOP。 これら2つのリクエストの予想される動作を誰かに教えてもらえますか? 例1: Instance Maxdop: 1 CTFP: 50 Query hint: Maxdop=2 Query cost: 30 例2: Instance Maxdop: 1 CTFP: 50 Query hint: Maxdop=2 Query cost: 70

5
変数としてのCaseステートメントで100を超えるエントリを持つ方法
単純なクエリの4か所で同じステートメントを使用している> 100の選択肢を含むcaseステートメントを記述しました。 同じクエリを2回実行し、それらを結合したものもカウントしているため、group byにもcaseステートメントが含まれています。 これは、同じ会社の異なるレコードの綴りが異なるいくつかの会社名のラベルを変更するためです。 変数をVarChar(MAX)として宣言しようとしました declare @CaseForAccountConsolidation varchar(max) SET @CaseForAccountConsolidation = 'CASE WHEN ac.accountName like ''AIR NEW Z%'' THEN ''AIR NEW ZEALAND'' WHEN ac.accountName LIKE ''AIR BP%'' THEN ''AIR BP'' WHEN ac.accountName LIKE ''ADDICTION ADVICE%'' THEN ''ADDICTION ADVICE'' WHEN ac.accountName LIKE ''AIA%'' THEN ''AIA'' ... selectステートメントで使用すると、クエリはcaseステートメントをテキストとして返し、評価しませんでした。 また、グループで使用することもできませんでした-次のエラーメッセージが表示されました。 Each GROUP …

3
SQL Serverのバージョンに応じて、RAISERRORまたはTHROWを選択することはできますか?
これが私のコードです: BEGIN TRY INSERT INTO TABLE (F1,F2,F3) VALUES ('1','2','3') END TRY BEGIN CATCH ;THROW END CATCH SQL 2008が搭載されたマシンで実行しない限り、うまく機能します。CATCHブロックでSQLバージョンをチェックし、それが2012以上の場合はTHROWを実行し、2008の場合はRAISERRORを実行します。構文エラー、それが可能かどうか疑問に思っています。このような単純なものでさえ、私にはうまくいきません。 BEGIN CATCH IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW END CATCH 任意のアドバイスをいただければ幸いです。

4
SET操作に参加できるローカル変数の最大数はいくつですか?
ビジネスロジックを含むストアドプロシージャがあります。その中には約1609の変数があります(理由は聞かないでください、これがエンジンのしくみです)。SET変数を他のすべての変数の連結値にしようとしています。結果として、作成中にエラーが発生します。 メッセージ8631、レベル17、状態1、手順XXX、行YYY内部エラー:サーバーのスタック制限に達しました。クエリで潜在的に深い入れ子を探し、それを単純化してみてください。 エラーは、SET操作で使用する必要がある変数の数が原因であることがわかりました。2つに分けて割り当てができます。 私の質問は、この領域にいくつかの制限があるのですか?チェックしましたが何も見つかりませんでした。 このKBに記載されているエラーを確認しましたが、これは私たちのケースではありません。CASEコード内では式を使用しません。その一時変数を使用して、CLR関数を使用して置き換える必要がある値のリストを準備します。SQL ServerをSP3 CU6(最新)に更新しましたが、まだエラーが発生しています。

1
###。###。####パターン一致を強制するCHECK制約
マルチパートコードにこの正規表現パターンを適用するチェック制約が必要です。 ^\d{3}\.\d{3}\.\d{4}$ ... 3つの数字、ピリオド、3つの数字、ピリオド、4つの数字。 パターンマッチングを実施するためにCLR関数を作成する必要がありますか?また、CLR関数はDDLで参照できますか? 別の方法でパターンを適用する方法はありLIKEますか?

1
SQL Serverストアドプロシージャの名前付け
ストアドプロシージャにと名前を付け始めました[16_TestStoredProc]。このようなストアドプロシージャの名前に影響はありますか? なぜこれを行っているのかは説明しません。私がこれに問題を抱えているわけではありませんが、何らかの影響があります。

1
ジョブはスケジュールどおりに実行されていません
したがって、Robocopyスクリプトを実行してすべてのファイルを1つのフォルダーから別のフォルダーに移動する基本的なSQLエージェントジョブがあります。 ジョブはかなり基本的なセットアップです。 かなり基本的なスケジュールで。 それでもまだ実行されていません。うまく走るという意味でもないし、走るという意味でもない。これに該当する理由はありますか? 追加情報については、ジョブについても説明します。 USE [msdb] GO /****** Object: Job [MoveMantisFilesToArchive] Script Date: 12/23/2015 10:21:52 AM ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 12/23/2015 10:21:52 AM ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) …

1
SQL Serverの「チェックポイント時にログを切り捨て」オプション
長い話ですが、私たちの長期コンサルタント(元従業員)は、Tivoli Storage Managerとのインターフェースを取るためにカスタムスクリプトを数年(2006年ほど)書いており、という名前のSQL Server DBオプションをチェックしているようtruncate log on checkpointです。彼らの主張は、SQL 2012であるインスタンスでスクリプトが機能し、バックアップを実行することを妨げているということです。 私はそのようなオプションを見つけることができずsp_configure、バックアップが1つのインスタンスを除いてどこでも機能しているので、それは完全なBSだと感じています。しかし、それがそうであるなら、私は地雷を取り除き、他の時代遅れの要素を取り除きたいと思います。ベンダーに確認してもらっていますが、彼らの言うことにはあまり自信がありません。 私が行った調査では、SQL 2000またはSybaseのオプションの1つであると考えられます。もう1つの主張は、復旧モデルがSIMPLE存在し、それをオンまたはオフにする明示的なオプションがない場合、それが以降のバージョン(2008以降)で暗黙的に呼び出される/使用されるというものでした。 TRUNCATE LOG最近のトランザクションログのしくみが原因でこのコマンドは廃止されているため、現時点ではクエリを実行できるオプションではないと思います。 私はSQL Server 2000のインスタンスを持っていないので、誰かがこれを思い出したり、置いてあるものでそれをチェックしたりできることを望んでいました。それは私が推薦できるものではないことを彼らに話しました。私はまた、誰かがこれが時代遅れであることを確認できることを望んでいました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.