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

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

10
UTCと現地時間の間にDSTの前または後の日付の正しいオフセットを取得するにはどうすればよいですか?
現在、UTC日時からローカル日時を取得するために次を使用しています。 SET @offset = DateDiff(minute, GetUTCDate(), GetDate()) SET @localDateTime = DateAdd(minute, @offset, @utcDateTime) 私の問題は、夏時間の間発生した場合GetUTCDate()や@utcDateTime、@localDateTime時間のオフされてしまいます。 現在の日付ではない日付のUTCから現地時間に変換する簡単な方法はありますか? SQL Server 2005を使用しています

5
メモリを使い果たすことなく、多くの挿入を含む大きなスクリプトを実行するにはどうすればよいですか?
質問: selectステートメントから約45,000の挿入があるスクリプトがあります。実行しようとすると、メモリが不足していることを示すエラーメッセージが表示されます。このスクリプトを実行するにはどうすればよいですか? コンテキスト: クライアントが使用する別のアプリでアプリを快適に動作させるために、いくつかの新しいデータフィールドが追加されました。 現在のデータ項目をこれらの新しいフィールドの値にマッピングしたデータでいっぱいのクライアントからデータのスプレッドシートを取得しました。 ステートメントを挿入するためにスプレッドシートを変換しました。 ステートメントの一部のみを実行すると機能しますが、スクリプト全体は機能しません。 いいえ。タイプミスはありません。 別の方法がある場合は、このデータをロードする必要がありますので、お気軽に私を責め、知らせてください。

3
ビューにWHERE句を追加すると、ビューが最適化されますか?
ビューの内側または外側でビューをフィルタリングすると、違いが生じますか? たとえば、これら2つのクエリに違いはありますか? SELECT Id FROM MyTable WHERE SomeColumn = 1 または SELECT Id FROM MyView WHERE SomeColumn = 1 とMyView定義されます SELECT Id, SomeColumn FROM MyTable ソーステーブルがリンクサーバー上にある場合、答えは異なりますか? リンクサーバーから大きなテーブル(44mil行)を2回クエリし、結果の集計を取得する必要があるため、私は尋ねています。データにアクセスするために2つのビューを作成する必要があるかどうか(クエリごとに1つ)、または単一のビューと1つのWHERE句で処理できるかどうかを知りたいです。

2
SQL Serverでインデックスを再構築および再編成する必要がある理由
インターネットを検索した後、私は理由を見つけることができませんでした SQL Serverでインデックスを再構築および再編成する必要があるのはなぜですか? 再構築して再編成すると、内部的にはどうなりますか? サイトの記事には次のように書かれています: インデックスの断片化が40%を超える場合、インデックスを再構築する必要があります。インデックスの断片化が10%〜40%の場合、インデックスを再編成する必要があります。インデックス再構築プロセスはより多くのCPUを使用し、データベースリソースをロックします。SQL Server開発バージョンとエンタープライズバージョンにはオプションのオンラインがあり、インデックスの再構築時にオンにできます。ONLINEオプションは、再構築中にインデックスを利用可能にします。 これを理解することはできませんでしたが、これWHENを行うにはそれを言うが、WHYインデックスを再構築および再編成する必要があるかどうかを知りたいですか?

4
テーブルへの大きな変更には何が良いですか:毎回DELETEとINSERTまたは既存のUPDATEですか?
私は毎日1つのテーブルで約36Kレコードを変更する必要があるプロジェクトを作成しています。私は何が良くなるのだろうかと思っています: 行を削除して新しい行を挿入する、または 既存の行を更新する 私にとっては、すべての行を削除して新しい行を挿入する方が簡単ですが、これがテーブルとインデックスを断片化し、パフォーマンスに影響を与える場合、可能な限り更新を行い、必要な場合にのみ削除/挿入することをお勧めします。 これは毎晩のサービスになりますが、プロセス自体の速度を改善するつもりはありません。私は、このテーブルに対するクエリのパフォーマンスについて、私が既に8,900万件のレコードを持っている場合と、この夜間のプロセスがどのように影響するかについてより懸念しています。 この夜間のプロセスのために、レコードを削除/挿入するか、既存のレコードを更新する必要がありますか(可能な場合)?

6
多数の行を削除した後、SQL Serverデータベースのサイズは減少しませんでした。
この質問は、データベース管理者のStack Exchangeで回答できるため、スーパーユーザーから移行されました。 7年前に移行され ました。 私はSQLが得意ではありませんが、保守するデータベースがあります。 残っている場所がほとんどないので、たとえば2008年のすべてのデータを削除することにしました。削除クエリ(約100,000行が削除されました)を実行し、トランザクションログを削除した後、アクションはデータベースのサイズには影響しませんでした。他に何かしなければならないことはありますか?

2
ユーザー定義関数の最適化の問題
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 4年前に移行され ました。 1行のみをフェッチする必要があるにもかかわらず、SQLサーバーがテーブル内のすべての値に対してユーザー定義関数を呼び出すことを決定する理由を理解するのに問題があります。実際のSQLはもっと複雑ですが、問題をこれまで減らすことができました。 select S.GROUPCODE, H.ORDERCATEGORY from ORDERLINE L join ORDERHDR H on H.ORDERID = L.ORDERID join PRODUCT P on P.PRODUCT = L.PRODUCT cross apply dbo.GetGroupCode (P.FACTORY) S where L.ORDERNUMBER = 'XXX/YYY-123456' and L.RMPHASE = '0' and L.ORDERLINE = '01' このクエリでは、SQL Serverは、ORDERLINEから返される推定行数と実際の行数が1(主キー)であっても、PRODUCTテーブルに存在するすべての値に対してGetGroupCode関数を呼び出すことを決定します。 行カウントを示すプランエクスプローラーの同じプラン: テーブル: ORDERLINE: 1.5M rows, …

3
sql-server bakを復元し、同時にログを圧縮することは可能ですか?
問題調査のために開発者オフィスに転送したクライアントからのbakファイルがあります。現在、バックアップは25GBで、復元されたデータベースはほぼ同じサイズですが、復元するには100GBが必要です。これは、データベースが75GBのトランザクションログサイズを持つように設定されているためだと思います。データベースを復元した後、ログファイルを圧縮できますが、復元でこれを行う方法はありますか?

1
SQL Serverで「No Join Predicate」とはどういう意味ですか?
MSDN「Missing Join Predicate Event Class」は、「結合述語のないクエリが実行されていることを示しています」と述べています。 しかし、残念ながら、それほど簡単ではないようです。 たとえば、非常に単純な状況: create table #temp1(i int); create table #temp2(i int); Select * from #temp1, #temp2 option (recompile); テーブルにはデータがなく、警告もありませんが、明らかに結合述語はありません。 私はSQL Server 2005の(同じリンク、ちょうど他のサーバーバージョン)のドキュメントを見てみる場合は、余分な文章があります:「このイベントはの両側が1行以上のリターンに参加した場合にのみ生成されます。」これはなるだろう前の状況での完全な意味。データがないため、両側は0行を返し、警告を返しません。行を挿入すると、警告が表示されます。うんいいね。 しかし、次の混乱する状況のために、両方のテーブルに同じ値を挿入します。 Insert into #temp1 (i) values (1) Insert into #temp1 (i) values (1) Insert into #temp2 (i) values (1) Insert into #temp2 (i) values …

2
ミラーリングセッションがタイムアウトしてフェールオーバーする原因は何ですか?
累積更新プログラム3を適用したSQL Server 2005 SP4を実行する2つの運用SQLサーバーがあります。両方のサーバーは同一の物理マシンで実行されます。4 x 12コアCPUと512GB(yes GB)のRAMを備えたDELL PowerEdge R815、すべてのSQLデータベースとログ用の10GB iSCSI SAN接続ドライブ。OSはMicrosoft Windows Server 2008 R2 Enterpriseエディションで、すべてのSPおよびWindowsが更新されています。OSドライブは、3 x 72GB 2.5 "15k SASドライブのRAID 5アレイです。SA​​Nは、48 x 10K SAS 3.5"ドライブを備えたDell EqualLogic 6510で、RAID 50で構成され、2つのSQL ServerのさまざまなLUNにスライスされ、共有されますExchangeマシンと複数のVMWareサーバーを使用します。 20を超えるデータベースがあり、そのうち11がミラーリングされ、ミラーリング監視サーバーを使用しています。ミラーリング監視サーバーは、ミラーリング監視サービスを提供する以外に使用されないSQL Serverインスタンスを実行する低出力のマシンです。最大のミラーリングされたデータベースは450GBで、約100〜300 iopsを生成します。データベースミラーリングモニターは、現在の送信速度を毎秒約100 kb〜10 mb、ミラーコミットオーバーヘッド(通常)0ミリ秒を報告します。ミラーサーバーは、プリンシパルについていくことに問題はありません。 ミラーリングフェールオーバーが常に発生しています。単一のデータベースがフェールオーバーすることもあれば、ほぼすべてのデータベースが同時にフェールオーバーすることもあります。たとえば、昨夜、11のデータベースのうち10がフェイルオーバーし、手動でフェイルオーバーするまで残りのデータベースはアクセス可能なままでした。 問題を特定するためにいくつかのトラブルシューティング手順を実行しましたが、これまでのところ問題を解決できませんでした。 1)マシンには、最初にプライマリネットワーク接続として使用したBroadcom BCM5709C NetXtreme II 4ポートギガビットネットワークアダプターが付属していました。以来、問題としてNICを排除するために、両方のマシンにIntel(R)PRO / 1000 PTデュアルポートサーバーアダプターをインストールしました。 2)すべてのデータベースには、ミラーリングに関係するデータベースのログバックアップとともに、夜間の自動フルバックアップがあります。ログファイルの使用状況は監視されており、使用率が15%を超えることはめったにありません。メインデータベースのログファイルは125GBで、サイズが511MBから1GBまでの159個の仮想ログファイルで構成されています。TempDBは独自のLUN上にあり、24 x 2GBファイルで構成されています。 3)ミラーリング監視サーバーのSQL Serverのログには、次のエラー以外は表示されません。「TCP://SQL02.DOMAIN.INET:5022」へのミラーリング接続は、応答なしで30秒後にデータベース「Data」に対してタイムアウトになりました。サービスとネットワーク接続を確認してください。 …

2
クラスター化インデックスと非クラスター化インデックスのパフォーマンスの違い
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私が読んでいたClusteredとNon Clustered Indexes。 Clustered Index-データページが含まれています。つまり、完全な行情報がクラスター化インデックス列に表示されます。 Non Clustered Index-クラスター化インデックス列(利用可能な場合)またはファイル識別子+ページ番号+ページ内の合計行の形式の行ロケーター情報のみが含まれます。これは、クエリエンジンが実際のデータを見つけるために追加の手順を実行する必要があることを意味します。 クエリ -私たちは、テーブルが一つだけ持つことができることを知っているとどのように私は実用的な例の助けを借りて、パフォーマンスの違いを確認することができますClustered Indexし、提供sorting時Clustered Index ColumnとNon Clustered Index提供していないsortingと999をサポートすることができますNon Clustered Indexes中SQL Server 2008にして249 SQL Server 2005。

5
インスタンスのパフォーマンスを維持するために定期的な再起動が必要なのはなぜですか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 SQL 2005に運用DBサーバーがあります。すべてはしばらく正常に動作しますが、数週間後、顕著なパフォーマンスの低下が見られます。SQL Serverを再起動するだけで、パフォーマンスが通常に戻ります。 背景: 1200以上のデータベース(ほとんどが単一テナント、一部がマルチテナント)を実行しています。マルチテナントのみへの移行について講義する前に、この構造を維持する正当な理由があります...... RAMは16 GBです。再起動後、SQL Serverが15 GBの使用量に戻るのにそれほど長くかかりません。 アクティブDB接続は約80の接続です-プロセスごとにWebサーバーごとに1つの接続プールがあることを考えると、かなり健全であると感じているため、接続リークの問題はありません。 ピーク時以外にいくつかのことを試しました。-DBCC DROPCLEANBUFFERS(チェックポイント付き)を実行して、データキャッシュをクリアします。効果はなく、RAM使用量もクリアされません)。-FREEPROCCACHEおよびFREESYSTEMCACHEを実行して、クエリプランとストアドプロシージャキャッシュをクリアします。無効。 明らかに、SQL Serverを再起動することは、アクティブな運用環境では理想的ではありません。何かが欠けています。他の誰かがこれを通過しますか? 更新:April-28-2012 まだこの問題と戦っています。OSとの競合を排除するために、SQL Serverのメモリを10 GBに下げました。絞り込みに近づいていますが、次のステップからの助けが必要です。 SQL Serverを再起動した後、ページファイルが12.3 GBから12.5 GBの間でホバリングしていることがわかりました。それは数日間そのままです。合計サーバースレッドは850から930の間でハングアウトします-安定しており、終日一貫しています(sqlserverはトラフィックに応じて55から85の間で安定しています)。 次に、「イベント」があります。私はイベントが何であるかわからず、ログでそれを見ることができず、曜日またはそれが起こる時間に一貫したものを見ることはできませんが、突然ページファイルはすべて14.1または14.2のいずれかにジャンプしますGB、およびスレッドは1750〜1785の間にジャンプします。 これが発生したときにパフォーマンスをチェックすると、これらのスレッドのうち900以上がsqlserverです。したがって、sp_who2にアクセスして、これらのスレッドがどこから来ているのかを確認します。使用されている80個程度のdb接続があります。 だから.... SQLサーバー上のこれらの900個のスレッドの残りがどこにあるのか、そして彼らが何をしているのかを見つけることができるアイデアはありますか? 更新:2012年6月1日 まだ問題と戦っています。まだこれを読んでいる人にとっては、スレッドが跳ね上がる問題は解決されています。これは、自動化されたComVaultバックアップソフトウェアが原因でした。現在のデータベースを単にバックアップするのではなく、もはや存在しないデータベースをバックアップしようとするスレッドを作成していました(以前のデータベースのリストを維持していました)。 しかし、問題はまだ残っており、毎週再起動する必要があります。Rackspaceチームと協力して、光を当てられるかどうかを確認します。

4
「増分キーに基づいたクラスター化インデックスの作成を避ける」ことは、SQL Server 2000日からの神話ですか?
私たちのデータベースは多くのテーブルで構成されており、そのほとんどは整数の代理キーを主キーとして使用しています。これらの主キーの約半分はID列にあります。 データベース開発は、SQL Server 6.0の時代に始まりました。 これらのインデックス最適化のヒントにあるように、最初から続いているルールの1つは、増分キーに基づいてクラスター化インデックスを作成しないことです。 現在、SQL Server 2005とSQL Server 2008を使用して、状況が変わったという強い印象を持っています。一方、これらの主キー列は、テーブルのクラスター化インデックスの完全な最初の候補です。

4
SQLサーバージョブを実行する権限を付与する
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 MSSQLサーバー2005に、すべてのデータベースユーザーの実行を許可するジョブがあります。 ジョブの実際の作業への入力はデータベーステーブルから取得されるため、セキュリティについては心配していません。そのテーブルにレコードを追加せずにジョブを実行するだけでは何も実行されません。 仕事に公共の許可を与える方法を見つけることができません。 これを行う方法はありますか?この時点で考えることができる唯一のことは、ジョブを絶えず実行する(またはスケジュールどおりに実行する)ことです。存在するとすぐに行われますが、これは最適なソリューションではないようです。

2
SQLコンパイルはSQL Serverのパフォーマンスにどの程度影響しますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 SQL Server 2005のインスタンスをプロファイリングしていますが、PerfMonのSQLServer:SQL Statistics - SQL Compilations/secメトリックを使用すると、平均が約170程度であることがわかります。 SQLプロファイラーを作成し、SP:CompileまたはSQL:Compileイベントを探しました。どうやら存在しません。私が見つけたStored Procedure/SP:RecompileとTSQL/SQL:StmtRecompileのイベント。プロファイラーに表示されるデータの量は、これらが間違ったイベントであることを示唆していますが、よくわかりません。 だから私の質問。これらのいずれかの答えは素晴らしいでしょう。 SQL Serverで何がコンパイルされているかを正確に確認するにはどうすればよいですか? 間違った指標を選んで調べましたか?PerfmonまたはSQL Profilerのどちらですか? Stored Procedure/SP:RecompileおよびTSQL/SQL:StmtRecompileSQLプロファイラでのイベント...彼らは、期間メトリックが含まれていません。これらのイベントがシステムへのタイミングの影響を確認する方法を提供しない場合、システムへのこれらのイベントの影響をどのように測定できますか。

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