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

SQL Server 2008 R2(メジャービルドバージョン10.50.xxxx)。また、sql-serverでタグ付けしてください。

1
20〜60秒ごとに起動するDBCC CHECKDB
実稼働環境への展開に急速に近づいている開発環境があり、ログで約20秒ごとにメッセージが表示されることに気付きました。 Starting up database 'dbname' CHECKDB for database 'dbname' finished without errors これに気づいたのは、これをテストしているエンドユーザーに問題があり、Windowsイベントログ(アプリケーションログ)でエラーに気付いたためです。 The log for database 'dbname' is not available. Check event log for related messages. ちなみに、関連するメッセージは見つかりませんでしたが、オフライン/オンラインサイクルで解決しました。 私が考えることができる唯一のことは、このアプリケーションが1msごとにデータを収集することですが、このデータのすべてがデータベースに挿入されるわけではありません。開発サーバーであるため、ログとデータが同じドライブ上にあるように構成されました。これら2つの情報を念頭に置いて、私はこれがIOの問題であり、サーバーがそのストレージ(SAN)への接続の損失から回復しようとしていることに傾倒しています。しかし、これでもすべてのデータベースが失われるわけではないため、これだけでは意味がありません。他に何がこれを引き起こしているのでしょうか? プラットフォーム:Windows Server 2008 R2(標準)上のSQL Server 2008 R2(Ent。)

3
SQL Serverのテーブルに複数のNULL可能FKを設定するのは悪い習慣と見なされますか
SQL Serverのデータベース構造には、注文に関するさまざまな情報を必要とする3種類の製品があります。だから、私は1つ作成しCustomers、テーブルと三つの異なる受注テーブルを:OrdersForProductAs、OrdersForProductBs、OrdersForProductCs。すべての注文表には、1対多の関係がありCustomersます。 Payments支払いの詳細を内部に保持する別のテーブルもあります。しかし、ここでそれをどのように構成するかについて疑問があります。 複数の製品タイプがあり、顧客が複数の製品を同時に注文する可能性があるため、これら3つの注文テーブルをPaymentsテーブルに関連付ける必要があります。 もう1つの問題は、顧客が1種類の製品のみを注文する可能性があることです。したがって、PaymentsテーブルのFK列はである必要がありますnullable。 私の質問は、これらのnullableFKカラムが長期的には頭痛の種になるかどうかです。一般的に、テーブルにNULL入力可能FK列を設定することは悪い習慣と見なされますか?

5
SQL Server 2008のフルテキストインデックスが完了していないようです
当社のWebサイトには、Webサイト検索用のフルテキストインデックスを備えたSQL Server 2008 R2 Express Editionデータベースがあります。インデックスが作成されたテーブルの1つで新しいレコードが追加または更新されるたびに、インデックス作成プロセスが完了しないようです。 このサイトで見つかった基本的に同じクエリを使用して、過去数週間にわたってステータスを監視しています:http : //www.sqlmonster.com/Uwe/Forum.aspx/sql-server-search/2155/Why-is-this -人口がかかるほど長い これは、クエリを実行したときに表示されるものです(クリックするとフルサイズになります)。 インデックス付きテーブル内の最新のレコードは完全なものではなく、検索できません。テーブルにあまり多くのデータはありませんが、インデックス作成が完了するかどうかを確認するために何日も待機しましたが、何も変化しません。 インデックス作成を正常に完了することができる唯一の方法は、カタログを再構築するか、すべてのインデックスを削除して再作成することです。 私がそれをするたびに、最初の新しいレコードが追加されるとすぐに同じ問題が再発します。 念のため、サーバーの統計を以下に示します。 クアッドコアAMD Opteron 2.34GHz 4GB RAM Windows Server 2008 R2 Enterprise SP1 x64 SQL Server 2008 R2 Express Edition with Advanced Services x64

3
ユーザーが属するADグループログインは何ですか?
この質問に適切なタイトルを選択したかどうかはわかりません。私が本当に望んでいるのは、個々のWindows ADユーザーが与えられた場合、このサーバーの特定のデータベースにアクセスできるWindows ADグループ(ログイン)のリストを見つけたいです 次のクエリを実行すると select name, principal_id, type, type_desc, default_schema_name, create_date, modify_date, owning_principal_id, sid, is_fixed_role from sys.database_principals 私のサーバーで Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日00:54:03著作権(c)Windows NT 6.1(ビルド7601:Service Pack 1)上のMicrosoft Corporation Standard Edition(64ビット) 次の結果が得られます(一部のリスト): 特定のログインが持つすべての許可を知る必要があります。このログインは、ADグループを介してサーバー/データベースにアクセスできます。 1)上記のリストから、私のログインはどのADグループに属しますか? 以下でこれを行っていますが、このユーザーが属するADグループ(上記の図に従ってこのサーバーにアクセスできる)のリストを見つけたいと思います。 まず、問題のユーザーとして実行します EXECUTE AS LOGIN='mycompany\HThorne' DECLARE @User VARCHAR(20) SELECT @USER = SUBSTRING(SUSER_SNAME(), CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME())) …


5
前の月末値に基づいて欠落データを入力する
次のデータが与えられた場合: create table #histories ( username varchar(10), account varchar(10), assigned date ); insert into #histories values ('PHIL','ACCOUNT1','2017-01-04'), ('PETER','ACCOUNT1','2017-01-15'), ('DAVE','ACCOUNT1','2017-03-04'), ('ANDY','ACCOUNT1','2017-05-06'), ('DAVE','ACCOUNT1','2017-05-07'), ('FRED','ACCOUNT1','2017-05-08'), ('JAMES','ACCOUNT1','2017-08-05'), ('DAVE','ACCOUNT2','2017-01-02'), ('PHIL','ACCOUNT2','2017-01-18'), ('JOSH','ACCOUNT2','2017-04-08'), ('JAMES','ACCOUNT2','2017-04-09'), ('DAVE','ACCOUNT2','2017-05-06'), ('PHIL','ACCOUNT2','2017-05-07') ; ...特定のユーザーがいつアカウントに割り当てられたかを表します。 毎月の最終日に特定のアカウントを誰が所有したかを確認しようとしています(割り当てられた日付はアカウントが所有権を譲渡した日付です)、不足している月末が入力されてdatesいます(利用可能な便利なテーブルから作成される可能性があります)有用な列を使用してDateKey、DateおよびLastDayOfMonth[[@AaronBertrandの提供])1。 望ましい結果は次のとおりです。 PETER, ACCOUNT1, 2017-01-31 PETER, ACCOUNT1, 2017-02-28 DAVE, ACCOUNT1, 2017-03-31 DAVE, ACCOUNT1, 2017-04-30 FRED, ACCOUNT1, 2017-05-31 FRED, ACCOUNT1, …

3
「CREATE UNIQUE INDEX」の「WHERE」句で「LEN」関数を使用します
私はこの表を持っています: CREATE TABLE Table01 (column01 nvarchar(100)); そして、この条件LEN(column01)> = 5でcolumn01に一意のインデックスを作成したい 私は試した: CREATE UNIQUE INDEX UIX_01 ON Table01(column01) WHERE LEN(column01) >= 5; 私が得た: テーブル 'Table01'のフィルター選択されたインデックス 'UIX_01'のWHERE句が正しくありません。 そして: ALTER TABLE Table01 ADD column01_length AS (LEN(column01)); CREATE UNIQUE INDEX UIX_01 ON Table01(column01) WHERE column01_length >= 5; 生産物: フィルター式の列「column01_length」が計算列であるため、フィルター索引「UIX_01」を表「Table01」に作成できません。この列が含まれないようにフィルター式を書き直してください。


4
総訪問数を計算する
重複する日に注意して顧客の訪問数を計算するクエリを作成しようとしています。itemID 2009の開始日が23日、終了日が26日であるため、アイテム20010がこれらの日の間である場合、この購入日を合計カウントに追加しません。 シナリオ例: Item ID Start Date End Date Number of days Number of days Candidate for visit count 20009 2015-01-23 2015-01-26 4 4 20010 2015-01-24 2015-01-24 1 0 20011 2015-01-23 2015-01-26 4 0 20012 2015-01-23 2015-01-27 5 1 20013 2015-01-23 2015-01-27 5 0 20014 2015-01-29 2015-01-30 2 2 OutPutは7 …

1
SSISパッケージでトランザクションを作成する際の問題
トランザクションを使用する必要があるパッケージで作業していますが、現在次のエラーが発生しています: SSIS package "CATS-Package.dtsx" starting. Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning. Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container. Error: 0xC001401A at CATS-Package: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B "The Transaction Manager is not available.". …

4
異なるテーブルのデータを1つに集約するのは悪い習慣ですか?
バックグラウンド 私は、大規模なヘルスレコードDBについて多くの大きなレポートを作成し、一般的に管理しています(SP、機能、ジョブなどを作成します)。元のスキーマとそれを使用するソフトウェアは別のベンダーのものであるため、構造についてはあまり変更できません。ラボ、手順、ワクチンなど、追跡を必要とする多くのレコードがあり、それらは多数のテーブルに散らばっています。その多くは肥大化しており、インデックス付けが不十分です(これを多少修正できました)。 問題 問題は、DBをほとんど制御できないため、また特定の更新やパッチから変更される可能性があるため、これらのレポートの作成と保守が困難で面倒になることです(特に重複が多い場合)。必要なのは1つのパッチだけで、多数のレポートの大部分を書き直しています。さらに、結合、ネスト、選択、適用が積み重なると、クエリはすぐに難読化され、遅くなります。 私の「解決策」 私の計画は、これらすべてのレコードを1つの「キャッチオール」テーブルに書き込み、元のテーブルにトリガーを書き込んで、この集約テーブルのレコードを維持することでした。もちろん、更新後にトリガーが完全であることを確認する必要がありますが、保守性の観点から、データを参照するだけの方がはるかに簡単です。 テーブルは薄くて長く、必要なデータのみを保存します。次のようなものです。 CREATE TABLE dbo.HCM_Event_Log ( id INT IDENTITY, type_id INT NULL, orig_id VARCHAR(36) NULL, patient_id UNIQUEIDENTIFIER NOT NULL, visit_id UNIQUEIDENTIFIER NULL, lookup_id VARCHAR(50) NULL, status VARCHAR(15) NULL, ordered_datetime DATETIME NULL, completed_datetime DATETIME NULL, CONSTRAINT PK_HCM_Event_Log PRIMARY KEY CLUSTERED (id) ) 次に、type_idやアイテムのグループ化などのさまざまなリレーショナルテーブルを作成します。 これらのテーブルのいくつかはかなり書き込まれているので、私はこの考えを二番目に推測し始めています。私が書いているSPとレポートはデータも多く参照します。したがって、このテーブルが大量のI / Oを伴うレコードのロックとパフォーマンスの悪夢になることを心配しています。 …

2
PIVOTクエリのヘルプ
私は以下の構造を持つテーブルを持っています: CREATE TABLE [dbo].[AUDIT_SCHEMA_VERSION]( [SCHEMA_VER_MAJOR] [int] NOT NULL, [SCHEMA_VER_MINOR] [int] NOT NULL, [SCHEMA_VER_SUB] [int] NOT NULL, [SCHEMA_VER_DATE] [datetime] NOT NULL, [SCHEMA_VER_REMARK] [varchar](250) NULL ); いくつかのサンプルデータ(sqlfiddleに問題があるようです。 INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK]) VALUES(1,6,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build') INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK]) VALUES(1,6,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build') INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK]) VALUES(1,7,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored …

1
統計は最新ですが、推定値が間違っています
するとdbcc show_statistics ('Reports_Documents', PK_Reports_Documents)、レポートID 18698に対して次の結果が得られます。 このクエリの場合: SELECT * FROM Reports_Documents WHERE ReportID = 18698 option (recompile) クラスター化インデックスPK_Reports_Documentsを期待どおりにシークするクエリプランを取得します。 しかし、私を困惑させるのは、推定行数の誤った値です: よると、この: サンプルクエリのWHERE句の値がヒストグラムのRANGE_HI_KEY値と等しい場合、SQL ServerはヒストグラムのEQ_ROWS列を使用して、等しい行の数を決定します これは私が期待する方法でもありますが、実際にはそうではないようです。またRANGE_HI_KEY、提供されたヒストグラムに存在する他のいくつかの値を試してみてshow_statistics、同じことを経験しました。私の場合、この問題により、一部のクエリで非常に最適でない実行プランが使用され、実行時間が数分になるのに対し、クエリヒントで1秒で実行できるように思われます。 全体として:EQ_ROWS推定行数にヒストグラムが使用されていない理由と、誤った推定値はどこから来たのかを誰かが説明できますか? もう少し(おそらく役立つ)情報: 統計の自動作成はオンであり、すべての統計は最新です。 クエリされるテーブルには、約8000万行があります。 PK_Reports_Documentsなる組み合わせPKでありReportID INT、およびDocumentID CHAR(8) クエリは合計5つの異なる統計オブジェクトをロードしているように見えますが、すべてのオブジェクトにReportIDはテーブルの+他の列が含まれています。それらはすべて新しく更新されました。RANGE_HI_KEY以下の表にあるのは、ヒストグラムの上限の列値です。 +-------------------------------------------------------------------------+----------+--------------+--------------+---------------------+--------------+------------+----------+---------------------+----------------+ | name | stats_id | auto_created | user_created | Leading column Type | RANGE_HI_KEY | RANGE_ROWS | EQ_ROWS | …

3
特定のSQL Serverインスタンスに「メモリ内のページをロック」権限があるかどうかを確実に判断するにはどうすればよいですか?
「メモリ内のページのロック」権限は、SQL Serverが使用するサービスアカウントに付与できます。これにより、SQL Serverはメモリがディスクにページングされるのを防ぐことができます。 SQL Serverマシンのいくつかには、SQL Serverが使用するサービスアカウントにこの権利を許可するように構成されたローカルポリシーがないことに気付きました。多数のサーバーがあるため、「ローカルシステムポリシー」管理コンソールを使用して各サーバーを手動で確認するのはせいぜい面倒です。 問題のサーバーに権限があるかどうかを判断するために使用できるT-SQLクエリ、拡張ストアドプロシージャ、またはその他の方法はありますか? 私はしたいと思いません使用しEXEC xp_readerrorlog 0, 1, 'lock memory privilege was not granted';、それは現在のSQL Serverエラーログを確認するに依存しているからです。サーバーが最後に再起動されてからログがロールオーバーされたと仮定すると、そのエラーログに関連するエントリが含まれない場合があります。最初のパラメーターをからなどに変更することで古いログを確認できることを理解しています0が1、エラーログは10個しか保持されておらず、十分ではない場合があります。設定を確認するフェールセーフな方法が必要です。

2
保守計画のスクリプト作成
SQL Server Management Studio(SSMS)を使用して、SQL Server 2008 R2のメンテナンスプランを作成しました。 ただし、別のサーバーでやり直す必要がある場合に備えて、スクリプトにエクスポート/変換できません。 方法はありますか? いいえの場合、SQL Serverの新しいバージョンを使用する方法はありますか?

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