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

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

3
親子ツリー階層順序
SQL Server 2008 R2のデータをフォローする必要があります。SQLFiddle スキーマ: CREATE TABLE [dbo]。[ICFilters]( [ICFilterID] [int] IDENTITY(1,1)NOT NULL、 [ParentID] [int] NOT NULL DEFAULT 0、 [FilterDesc] [varchar](50)NOT NULL、 [アクティブ] [tinyint] NOT NULL DEFAULT 1、 CONSTRAINT [PK_ICFilters] PRIMARY KEY CLUSTERED ([ICFilterID] ASC)WITH PAD_INDEX = OFF、 STATISTICS_NORECOMPUTE = OFF、 IGNORE_DUP_KEY = OFF、 ALLOW_ROW_LOCKS = ON、 ALLOW_PAGE_LOCKS = ON )ON …

1
SQL Server-誰でもSUMA、トレースフラグ8048、またはトレースフラグ8015を使用していますか?
最近、SQL Serverスタートアップトレースフラグ8048が含まれ、SQL Server 2008 R2システムでの重大なスピンロック競合の問題が解決されました。 パフォーマンス値がトレースフラグ8048(NUMAノードごとからコアごとにクエリメモリ付与戦略を促進する)、トレースフラグ8015(SQL Serverは物理NUMAを無視する)、またはSUMA(インターリーブされた十分に均一なメモリアクセス、一部のNUMAマシンのBIOSオプション)。 トレースフラグ8048 http://blogs.msdn.com/b/psssql/archive/2011/09/01/sql-server-2008-2008-r2-on-newer-machines-with-more-than-8-cpus -numa-node-may-need-trace-flag-8048.aspxごとに表示 トレースフラグ8015 http://blogs.msdn.com/b/psssql/archive/2010/04/02/how-it-works-soft-numa-io-completion-thread-lazy-writer-workers-and-memory -nodes.aspx システムのワークロードの詳細、問題のあるシステムからのメトリックの収集、介入後のシステムからのメトリックの収集。 トレースフラグ8048は「修正」でしたが、それが最良の修正でしたか?SQL Serverは、トレースフラグ8015により物理NUMAを無視しても同じことを達成できますか?メモリをインターリーブするようにBIOSを設定して、NUMA動作ではなくSMP動作のSUMA動作をサーバーに残してはどうですか? 平和!tw:@sql_handle システムについて:-4 hexコアXeon E7540 @ 2.00GHz、ハイパースレッド-128 GB RAM-WS2008R2-MSSQL 2008 R2 SP2-maxdop 6 ワークロードについて:-2つのレポートアプリケーションサーバーから駆動される1000のバッチスケジュール/キューレポート。-3種類のバッチ:毎日、毎週、毎月-SQL Serverへのすべてのレポートアプリケーションサーバー接続は、単一のサービスアカウントとして作成されます-最大レポート同時実行数= 90 問題のあるシステムに関する主な調査結果:-Perfmonから、15秒間隔--システムは95%〜100%のCPU使用率のまま--SQL Serverのバッファーページ検索<10000 /秒 待機およびスピンロックDMVから、5分間隔 高いCMEMTHREADウェイターと待機時間 高いSOS_SUSPEND_QUEUEスピンとバックオフ Bob Dorrのトレースフラグ8048に関するCSSエンジニアブログの投稿は、NUMAノードごとに8コアを超えるシステムがクエリメモリ許可のボトルネックにより同様の症状に陥ることがあることを示しています。トレースフラグ8048は、戦略をNUMAノードごとではなくコアごとに変更します。 介入 -T8048を設定してMSSQLを再起動しました。違いはすぐに明らかになりました。バッファページの検索速度は100万を超え、1秒あたり800万に急上昇しました。以前は24時間で完了できなかった問題のあるバッチワークロードが、4時間未満で完了しました。トレースフラグ8048の修正値の検証の一部として、調査や介入の焦点では​​ない別のバッチワークロードが提出されました(そして、その望ましくない副作用が最小限であることを確認しました)。このレポートバッチは、以前2時間で完了しました。トレースフラグ8048を設定すると、レポートバッチは約20分で完了しました。 ナイトリーETLにもメリットがありました。ETL時間は約60分から40分に短縮されました。 いくつかの場所から情報を集めて、高度なレポートキューイング、ハードウェアスレッドカウントを超える同時レポートカウント、および結合されたすべてのレポートの単一ユーザーアカウントが、ワーカースレッドのプレッシャーによって1つのNUMAノードにプレッシャーをかけると推測します同じユーザーアカウントの次の着信接続要求に対して不利になります。この時点で、次のNUMAノードはほぼ瞬時にいくつかの接続を取得します。各NUMAノードは、クエリメモリ許可のボトルネックを強調する可能性が高くなります。 クエリメモリ許可のためにさらにレーンを開くと、ボトルネックが解消されました。しかし、費用はわかりません。Bob DorrのCSS投稿により、トレースフラグ8048で追加のメモリオーバーヘッドがあることが明らかになりました。単一ページアロケータ領域内のオーバーヘッドは、MSSQL 2008 R2の最大サーバーメモリによって管理されていますか?もしそうなら、システムはバッファプールキャッシュにあるデータベースページの数が少ないと思います。そうでない場合、最大サーバーメモリを下げる必要がありますか?

3
SQL Serverデータベースの同期
問題定義 ユーザーには、ほとんどが最新のデータベースを照会する機能が必要です。データは最大24時間古くなる可能性があり、許容範囲内です。本番コピーで2番目のデータベースを取得して最新の状態に保つための最低コストのアプローチは何でしょうか?私が考えていないアプローチはありますか? 仕事量 株式取引活動の監視に使用するサードパーティのアプリケーションがあります。日中は、さまざまな作業フローの一部として多くの小さな変更が発生します(はい、この取引は有効でした。いいえ、これは疑わしいなどです)。夜には、大規模なセットベースの操作を実行します(前日の取引を読み込みます)。 現在の解決策と問題 データベーススナップショットを使用します。午後10時にスナップショットを削除して再作成します。ETL処理が開始されます。これは明らかにディスクに負担がかかりますが、ユーザーはデータベースをロックせずにデータベースを照会できます(Accessフロントエンドを使用します)。彼らはそれを夜遅くまで、また早朝に使うので、ダウンタイムに気づくでしょう。 このアプローチの問題は2つあります。1つ目は、夜間の処理が失敗した場合であり、これはそれほど珍しいことではないため、データベースを復元し、スナップショットが削除されることです。もう1つの問題は、処理時間がSLAを超えていることです。不十分な記述のクエリとインデックス作成の欠如を特定した後、ベンダーと協力してこの問題に対処しようとしています。データベースのスナップショットは、速度が存在する場合と存在しない場合の速度の違いから明らかなように、この速度低下の原因でもあります。 考慮されるアプローチ クラスタリング データベースクラスタリングを有効にしましたが、データを使用可能にする必要性に対処できず、一般的に管理者の生活を複雑にしました。それ以降はオフになっています。 SQL Serverレプリケーション 先週、レプリケーションを検討し始めました。私たちの理論では、2番目のカタログを立ち上げ、本番データベースと同期させることができます。ETLを開始する前に、接続を切断し、ETLプロセスが完了してから再度有効にします。 管理者はスナップショットレプリケーションを開始しましたが、スナップショットと必要なディスク消費量を生成するためにCPU使用率が数日かかることを心配しています。彼は、サブスクライバーに出荷する前にすべてのデータを物理ファイルに書き出すように見えるため、0.6TBのデータベースのストレージコストは1.8TBになると指摘しています。また、スナップの生成に数日かかる場合、目的のSLAに適合しません。 すばらしい記事を読んだ後、Snapshotがサブスクライバを初期化する方法であるように思えますが、その後、トランザクションレプリケーションに切り替えて同期を維持したいと思います。トランザクションレプリケーションをオン/オフしても、完全な再初期化は強制されませんか?それ以外の場合は、時間枠を爆破します データベースミラーリング データベースは完全復旧モードになっているため、データベースミラーリングはオプションですが、レプリケーションよりも知識が少ないです。「データベースミラーリングによってデータに直接アクセスすることはできません。ミラーリングされたデータにはデータベーススナップショットからのみアクセスできます」というSOの答えが見つかりました。 ログ配布 ログ配布もオプションのように思えますが、これは私が何も知らないことの別のものです。他の何よりも低コストのソリューション(実装と保守)でしょうか?Remusのコメント「ログシッピングはレプリカコピーへの読み取り専用アクセスを許可しますが、受信した次のバックアップログを適用するときにすべてのユーザーを切断します(15分から30分ごとなど)。」そのダウンタイムがどれくらいの時間に変換されるかわからないので、ユーザーが不安を感じるかもしれません。 MS Sync 先週末、Syncの使用について聞いただけで、まだ調査していません。この問題のように視認性の高いものに新しいテクノロジーを導入するのは嫌ですが、それが最良のアプローチである場合は、そうしてください。 SSIS ここでは多くのSSISを実行しているため、数百のSSISパッケージを生成してセカンダリの同期を維持することは、見苦しいとはいえ、オプションです。私はこれを行うのが好きではありません。それは多くのメンテナンスのオーバーヘッドであり、むしろ私のチームが引き受けないようにするためです。 SAN「マジック」スナップショット 過去に、管理者がSANテクノロジーを使用してディスク全体のインスタントバックアップを作成したことを聞いたことがあります。おそらく、mdf / ldfのuberquickコピーを作成するために使用できるいくつかのEMCマジックがあり、ターゲットデータベースをデタッチ/アタッチできます。 バックアップと復元 週に1回フルバックアップを取り、夜間に差分を取り、15分ごとにtlogを取ります。ユーザーが完全な復元のために3〜4時間の停止に耐えることができる場合、これはアプローチであると思われます。 制約 Windows 2008 R2、SQL Server 2008 R2(Enterprise Edition)、VMWare v5 Enterprise Edition、vmdkファイルにマップされたドライブを備えたEMC SANストレージ、Commault処理バックアップ、およびソースカタログ内の.6TBのデータ。これは、社内でホストするサードパーティアプリケーションです。それらの構造を変更することは、一般的に嫌われています。ユーザーは、データベースにクエリを実行せずに進むことはできず、作業を行うために監視するテーブルを積極的に識別することによる制約を受けることを拒否します。 現在、DBAは純粋に請負業者です。常勤者は出航しており、私たちはまだ交代していません。アプリケーション管理者はSQL Serverの問題に精通しておらず、この作業を支援/妨害できるストレージ/ VM管理者のチームがあります。開発チームは現在関与していませんが、アプローチに基づいて参加できます。そのため、ソリューションの実装と保守がより簡単であることが望ましいでしょう。 私は、法務の開発側にいるので、アプローチを提案することしかできず、物事の管理側に対処する必要はありませんでした。だから、管理者のサドルに時間がないので、あるアプローチが別のアプローチよりも優れていると言うのをためらっています。私が見ているように、それはDBの専門家として私をより価値あるものにするだけだからです。手押し車は持っていますが、ホロコーストマントはありません。 関連する質問 /programming/525637/what-are-the-scenarios-for-using-mirroring-log-shipping-replication-and-cluste /programming/434982/mirroring-vs-replication /programming/4303020/sync-databases-mirroring-replication-log-shipping …


3
masterデータベースをバックアップする頻度は?
BOLの提案はかなりあいまいです。 必要に応じてマスターをバックアップし、ビジネスニーズに合わせてデータを十分に保護します。定期的なバックアップスケジュールをお勧めします。これは、大幅な更新後に追加のバックアップで補完できます。 あなたはベンチャー場合はさらに、あなたはこれらの詳細を見つけます: マスターを更新し、バックアップを実行する必要がある操作の種類には、次のものがあります。 ユーザーデータベースの作成または削除。 ユーザーデータベースが新しいデータに対応するために自動的に成長する場合、 マスターは影響を受けません。 ファイルとファイルグループの追加または削除。 ログインまたはログインセキュリティに関連するその他の操作を追加します。 データベースへのユーザーの追加などのデータベースセキュリティ操作は、マスターに影響しません。 サーバー全体またはデータベース構成オプションの変更。 論理バックアップデバイスの作成または削除。 リンクサーバーやリモートログインの追加など、分散クエリとリモートプロシージャコール(RPC)用のサーバーの構成。 すべてのログインがWindowsグループを介して追加され、データベースに他の変更を加えない場合、それはマスターの1回限りのバックアップで十分であることを意味しますか? そうでない場合、masterデータベースの標準バックアップ間隔はどのくらいですか?

1
SQL Server-ネストされた非決定的なビュースタック内の文字列のローカライズの処理
私がアクセスされる一部の非決定的関数参照しているビューに出くわしたデータベースプロファイリングしながら、毎分1000から2500回をするために、各このアプリケーションのプール内の接続を。SELECTビューからの単純な結果は、次の実行計画をもたらします。 これは、数か月ごとに1行または2行の変更が発生する可能性がある1000行未満のビューの複雑な計画のようです。しかし、次のその他の遵守事項により悪化します。 ネストされたビューは非決定的であるため、インデックスを作成できません 各ビューは複数UDFのを参照して文字列を作成します 各UDFにはUDF、ローカライズされた言語のISOコードを取得するためのネストされたsが含まれています スタック内のビューは、s から返された追加の文字列ビルダーを述語として使用していますUDFJOIN 各ビュースタックはテーブルとして扱われます。つまり、基礎となるテーブルに書き込むためにそれぞれにINSERT/ UPDATE/ DELETEトリガーがあります。 ビューのこれらのトリガーは、これらの文字列構築をより多く参照CURSORSするEXECストアドプロシージャを使用しますUDF。 これはかなり腐っているように見えますが、TSQLの経験は数年しかありません。それも良くなります! これは素晴らしいアイデアだと判断した開発者UDFは、スキーマ固有の文字列から返された文字列に基づいて、格納されている数百の文字列を翻訳できるように、すべてを実行したようです。 スタック内のビューの1つを次に示しますが、それらはすべて等しく劣っています。 CREATE VIEW [UserWKStringI18N] AS SELECT b.WKType, b.WKIndex , CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.I18NString ELSE il.I18nString END AS WKString ,CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.IETFLangCode ELSE il.IETFLangCode END AS IETFLangCode ,dbo.User3StringI18N_KeyValue(b.WKType, b.WKIndex, …

1
数値へのキャスト時に奇妙なSQL Serverインスタンスがクラッシュする
C#Entity Frameworkで作業しているときに、SQL Serverインスタンスのクラッシュに気付きました。 私はこの声明まで追跡することができました: SELECT * FROM dbo.[TestTable] where mpnr in (1099059904, 1038139906, 1048119902, 1045119902, 1002109903, 1117109910, 1111149902, 1063149902, 1117159902, 1116109904, 1105079905, 1012079906, 1129129904, 1103059905, 1065059905, 1091059906, 1110149904, 1129149903, 1083029905, 1080139904, 1076109903, 1010019902, 1058019902, 1060019903, 1053019902, 1030089902, 1018149902, 1077149902, 1010109901, 1011109901, 1000119902, 1023049903, 1107119909, 1108119909, 1106119909) テーブルは次のようになります。 CREATE TABLE dbo.[TestTable]([MPNR] …

4
HashBytes関数で適切なアルゴリズムを選択する
比較のために、nvarcharデータのハッシュ値を作成する必要があります。T-SQLには複数のハッシュアルゴリズムがありますが、このシナリオで選択するのに最適なものはどれですか? 2つの異なるnvarchar値のハッシュ値が重複するリスクが最小になるようにします。インターネットでの私の研究に基づいて、MD5が最高のようです。そうですか?MSDNは、利用可能なアルゴリズムについて(下記のリンク)を教えてくれますが、どの条件のどのアルゴリズムに関する説明はありませんか? HASHBYTES(Transact-SQL) 2つのテーブルを2つのnvarchar(max)列で結合する必要があります。ご想像のとおり、クエリの実行には時間がかかります。各nvarchar(max)データのハッシュ値を保持し、ブロブであるnvarchar(max)値ではなく、ハッシュ値で結合を行う方が良いと考えました。問題は、どのハッシュアルゴリズムが一意性を提供するかです。そのため、1つ以上のnvarchar(max)に対して1つのハッシュ値を持つリスクに直面することはありません。

5
SQL Server Management Studio用のSQL Server Profilerをダウンロードする
SQL Server 2008データベースをプロファイルして、特定のデータベースで実行されているコードを確認するにはどうすればよいですか?SQL Serverプロファイラーを使用したことを覚えていますが、SQL Server 2008 R2 Expressをダウンロードした後、SQL Server Management Studioに表示されません。そのツールはどこでダウンロードしてインストールできますか?このオプションを表示するには、SQL Server 2008のフルバージョンが必要ですか?

2
FILESTREAMデータを除くデータベースの復元
コンテキスト 下部に大規模なデータベースを持つシステムを開発しています。これは、SQL Server 2008 R2で実行されているMS SQLデータベースです。データベースの合計サイズは約12 GBです。 これらのうち、約8.5 GBが単一のテーブルにありますBinaryContent。名前が示すように、これは、あらゆる種類の単純なファイルをBLOBとしてテーブルに直接格納するテーブルです。最近、FILESTREAMを使用して、これらすべてのファイルをデータベースからファイルシステムに移動する可能性をテストしています。 データベースに必要な変更を問題なく行いましたが、移行後もシステムは正常に動作しています。BinaryContentテーブルは次のように大まかになります。 CREATE TABLE [dbo].[BinaryContent]( [BinaryContentID] [int] IDENTITY(1,1) NOT NULL, [FileName] [varchar](50) NOT NULL, [BinaryContentRowGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL ) ON [PRIMARY] FILESTREAM_ON [FileStreamContentFG] ALTER TABLE [dbo].[BinaryContent] ADD [FileContentBinary] [varbinary](max) FILESTREAM NULL ALTER TABLE [dbo].[BinaryContent] ADD CONSTRAINT [DFBinaryContentRowGUID] DEFAULT (newsequentialid()) FOR [BinaryContentRowGUID] …

1
このNO JOIN PREDICATE警告に驚かされるべきですか?
パフォーマンスの低いストアドプロシージャの細かな部分をトラブルシューティングしています。手順のこのセクションでは、NO JOIN PREDICATE警告をスローしています select method = case methoddescription when 'blah' then 'Ethylene Oxide' when NULL then 'N/A' else methoddescription end, testmethod = case methoddescription when 'blah' then 'Biological Indicators' when NULL then 'N/A' else 'Dosimeter Reports' end, result = case when l.res is null or l.res <> 1 then 'Failed' …

2
この実行計画を説明できますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 このことに出会ったとき、私は他の何かを研究していました。いくつかのデータを含むテストテーブルを生成し、さまざまなクエリを実行して、クエリを記述するさまざまな方法が実行プランにどのように影響するかを調べていました。ランダムテストデータの生成に使用したスクリプトは次のとおりです。 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID('t') AND type in (N'U')) DROP TABLE t GO CREATE TABLE t ( c1 int IDENTITY(1,1) NOT NULL ,c2 int NULL ) GO insert into t select top 1000000 a from (select t1.number*2048 + t2.number …

3
負荷の下での挿入パフォーマンスの向上:なぜですか?
非常に非正規化されたテーブルへの挿入を実行するコードがあります。テーブルには、〜100〜300 +の範囲の列数があります。これは、Windows Server 2008上で実行されるSQL Server 2008 R2です。 各挿入は、同じトランザクションの下のいくつかのテーブルへの挿入で構成されます。一部の挿入はNHibernateによってバッチ処理されますが、一部は挿入できませんが、それらはすべて同じトランザクションの下にあります。 挿入を実行するコードを繰り返し呼び出して、たとえば500回挿入を実行すると、平均で約360ミリ秒になります。 奇妙なことに、4つのプロセス(Windows Server 2008の4つの異なるコマンドプロンプトから同じexeを実行)を使用してテストコードを同時に実行すると、呼び出しごとの挿入パフォーマンスが大幅に向上します。バーストは90ミリ秒(ほぼX4の高速)になります。コードから挿入時間を測定しています。 4つのプロセスは互いに何も知らないので、これはSQL Serverと関係があると考えていますが、その理由はまったくわかりません。なぜこれが起こっているのか、挿入がそれほど頻繁ではないときに同じパフォーマンスを得ることができる構成があるかどうかを知りたいです。 dbレベルで何が起こっているかを理解するためのSQL Server監視方法に関する提案も同様に歓迎します。

9
データベースオブジェクトのバージョン管理
開発者が作業しているデータベースが大きすぎます(多くのデータベースオブジェクトがあります)。dbオブジェクトの変更を管理する必要があります(変更管理)。当社には、dbの変更のみを担当する人はいません。そのため、データベースとスクリプトを同期できる、標準コードのバージョン管理などのデータベースオブジェクトの安全なソースが必要です。最高のものは何ですか。信頼性が高く、安価で、機能的-2つ選択してください:)

4
SSD上のSQL Serverデータベース-テーブルごとに個別のファイルを使用する利点はありますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 約30のテーブルがあるデータベースを作成しています。各テーブルには数千万の行が含まれ、各テーブルには単一の重要な列とプライマリ/外部キー列が含まれ、重い場合でもクエリの効率を最大限に高めます。更新と挿入を行い、クラスター化インデックスを多用します。2つのテーブルには可変長のテキストデータが含まれ、そのうちの1つには何億もの行が含まれますが、残りのテーブルには数値データのみが含まれます。 使用可能なハードウェア(約64 GBのRAM、非常に高速なSSD、および16コア)からパフォーマンスの最後の一滴を絞り出したいので、各テーブルに独自のファイルを持たせることを考えていました。 2、3、4、5、またはそれ以上のテーブルに参加しています。各テーブルは常に個別のスレッドを使用して読み取られ、各ファイルの構造はテーブルの内容と密接に調整されます。 SQL Serverが特定のテーブルの内容に追加するため。 1つの注意点は、SQL Server 2008 R2 Web Editionにこだわっています。これは、自動水平分割を使用できないことを意味します。これにより、パフォーマンスの向上として除外されます。 テーブルごとに1つのファイルを使用すると、実際にパフォーマンスが最大化されますか、それとも冗長になるビルトインSQL Serverエンジンの特性を見落としていますか? 次に、テーブルごとに1つのファイルを使用するのが有利な場合create table、特定の論理ファイルではなくファイルグループにテーブルを割り当てるオプションしか提供されないのはなぜですか?そのため、シナリオ内のすべてのファイルに対して個別のファイルグループを作成する必要があります。これは、SQL Serverが、提案していることを実行することで得られる利点を想定していないことを示唆しています。

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