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

Microsoft SQL Serverのすべてのバージョン(MySQL以外)。sql-server-2016のようなバージョン固有のタグも追加してください。これは、質問に関連することが多いためです。

5
並列処理のベストプラクティス
並列処理の設定に関する一般的なベストプラクティスは何ですか?SQL Serverはデフォルトで0使用可能なすべてのプロセッサを使用することを知っていますが、どのような場合にこのデフォルトの動作を変更しますか? OLTPワークロードの場合は並列処理をオフにする(maxdopをに設定する1)必要があることをどこかで読んだことを覚えています(この記事を探す必要があります)。なぜあなたがこれをするのか、私には完全には理解できません。 maxdopをいつSQL Server(0)まで維持しますか?いつ並列処理(1)をオフにしますか?maxdopを特定の数のプロセッサに明示的に指定するのはいつですか? 並列性の原因は何ですか?

7
スケジュールされたバックアップタスクは、常にジョブが成功したと言っているにもかかわらず、常にすべてのデータベースをバックアップするわけではありません
SQL 2008で、ストアドプロシージャを実行してすべてのデータベースをバックアップするジョブがあります。これは、SQLサーバーエージェントジョブを介して毎日実行されます。 それは毎日成功して終了しますが、いくつかのデータベースはいくつかのデータベースをバックアップした後にのみ成功して終了します。毎回異なる数のデータベースを使用できます。ほとんどの場合、すべてのデータベースが正常にバックアップされますが、場合によっては2つのバックアップが正常に実行され、場合によっては5などもバックアップされます。 ジョブ履歴、イベントビューアー、またはSQLサーバーログにエラーが表示されません。 フォルダは拡張可能なストレージボリューム上のフォルダへの「ジャンクション」ですが、ローカルディスクへのバックアップが行われています。 OSは、SQL Server 2008 Webエディション64ビットを実行しているWindows 2003 64ビットで、VMware ESXi 5ホスト上で実行されている仮想マシンです。 ストアドプロシージャ: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) -- database name DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name DECLARE @dbIsReadOnly sql_variant -- is database read_only? DECLARE @dbIsOffline …

4
TempDBでのDDL競合
過去数か月間、TempDB DDL競合の問題が発生しているSQL Server 2005 Standard x64があります。サーバーは待機リソース2:1:103(待機タイプはPAGELATCH_EX)で競合が発生します。 この問題は、サーバーに適切な負荷がかかっているときに散発的に発生するようです。私は「破壊用の一時テーブル」のレートを監視しており、2:1:103でPAGELATCH_EXの問題が発生しているときに5,000以上にジャンプする可能性があります。私が読んだことから、このカウンターはほとんどの場合0であるはずですが、私たちのカウンターはほとんどの場合300〜1100のどこかにとどまっているようです。システム上のユーザーが非常に少ない場合にのみ、カウンターは0になります。 干し草のスタックで針を探す必要なしに、tempdbのDDL競合の原因を絞り込むにはどうすればよいですか?

2
SQL Server:sysadmin権限を回避しながら適切な権限を与える方法
SQL Server 2008の1つのインスタンスにアクセスしたい同僚がいます。私は彼にこのインスタンスへの権利を与えなければならないでしょう。彼はする権利を持っている必要があります例えばです サーバーログインを追加および変更する メンテナンスプランの追加と変更(データベースからのバックアップの作成など) エージェントジョブのスケジュール 彼にsysadmin権限を与えたくないのですが、どのような権限を与える必要がありますか?

2
SQLサーバーのメモリカウンターを取得して値を表示するPowerShell
次のSQLサーバーカウンターをキャプチャするPowerShellスクリプトを書いています。 SQL Server:メモリマネージャー:合計サーバーメモリ(KB) SQL Server:メモリマネージャー:ターゲットサーバーのメモリ(KB) 私のマシンにはSQLサーバーの3つのインスタンスがあるため、このスクリプトですべてのカウンターを動的にキャプチャし、1つのサンプルの値のみを報告します。私は以下を書いてみました: Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list # displays nothing 最終的には、これを-computernameパラメーター付きで複数のサーバー間で実行したいので、動的にキャプチャーしたいと思います。 誰かが欠けているものを見つけるのを手伝ってくれませんか?以下は、私が実行している正確なスクリプトです。 Function checkTransactionsPerSecond([string] $Hostname ) { (Get-Counter -ListSet "*Databases").Counter | Where {$_ …

1
残余述語とは何ですか?
MSDNでオンラインで述語の定義を見つけることができましたが: TRUE、FALSE、またはUNKNOWNに評価される式です。述語は、WHERE句とHAVING句の検索条件、FROM句の結合条件、およびブール値が必要なその他の構文で使用されます。 残余述語が何であるかの定義を見つけることができませんでした。残余述語とは何ですか?

3
本番環境での特権を削減するが、仕事を過度に困難にしないための指針
Windows 2008 R2でSQL Server 2005および2008を実行します。 開発者の本番環境での特権を削減します。私もDBAと同じように、本番環境への権限を制限し、必要に応じて昇格させたいと考えています。 私の主な目標は、愚かな過ちを排除することです-DBA によって行われるため、開発者はせいぜい本番環境で読み取りアクセスしかできません。私たちは間違いを犯さないスーパーヒーローであるように行動するのが好きですが、常に制作権を持っているわけではないのは理にかなっており、一部の人が推奨するベストプラクティスです。 最善のアプローチは何ですか?日常的に、およびインストール中に最も苦痛を感じないものは何ですか? 現在、すべてのサーバーとデータベースに対する権限を持つDBAのWindowsグループがあります。 OSやリモートログインの権限を下げることにも興味がありますが、DBの権限に最も関心があります。 古いトレースのSA権限を削除する前に、saとしてトレースを実行し、場合によっては所有権をクリーンアップするために、昇格された特権が必要になると思います。他にどのような問題が予想されますか? あなたのアドバイスとあなたの経験を共有してくれてありがとう!

3
SQL Server 2008でのvarcharの使用による速度への影響
昔は、他の行とは別のページに格納されていたため、varcharover を使用することcharは大したことではありませんvarcharでした。これは、SQL Server 2008でも現在も当てはまりますか?1〜3 varchar(5)列をchar(5)テーブルの列に変更することで、メモリ/パフォーマンスが向上しますか? a)2.000.000行と言うb)varchar列のいずれかがインデックス/主キーの一部である場合

2
SQL ServerはRANGEをサポートすべきではありませんか?
Webサイトを開発し、SQL Serverを少し実行する人として、SQL Serverが結果に特定の範囲の行のみを含める必要があることを示す単純な句をサポートする必要があることは、私には何の問題もないようです。たとえば、行30〜39です。 現状では、SQL Serverにページングを実装することは、主にSQLに焦点を当てていない場合、実際には多くのWeb開発者の能力を少し超えています。 さらに、結合やその他の条件が原因ですでに複雑になっている可能性のあるクエリが大幅に簡略化されます。 それに加えて、ロジックは完全にMicrosoftの制御下にあるため、そのような句は時間の経過とともに内部で最適化される可能性が高くなると私は考えています。 私は少し前に別のフォーラムでこれを取り上げました、そして、多くの返信はこれが望ましくないことを示唆しているようでした。 ページングの既存の技法がそのまま残されることを考えると、そのような句を追加しない理由として考えられるのはどのようなものでしょうか?そして、それは私のような人々にとってとても良いでしょう。 マイクロソフトがこれを行わなかった正当な理由の誰かができますか?

2
2つのDBCC INDEXDEFRAGコマンドをそれぞれ異なるテーブルで同時に実行できますか?
現在、SQL Server 2005データベースのすべてのテーブルに対して、一度に1つのテーブルに対してDBCC INDEXDEFRAGを実行するスクリプトを実行しています。スペースの制約と稼働時間の要件により、INDEXDEFRAGの代わりにDBCC DBREINDEXを使用することはできません。 特定のテーブルが最適化されるまでに長い時間がかかることに気づきました。たとえば、 "sys.dm_exec_requests"動的管理ビューを調べると、table_idが829610394であるテーブルのクラスター化インデックスで、次のINDEXDEFRAGが現在削除されていることがわかります。 DBCC INDEXDEFRAG(0、829610394、1) デフラグプロセスが完了するまでにはかなりの時間がかかることは承知しています。現在実行中のスクリプトが最終的にすべてのテーブルを最適化するという事実は別として、現在のコマンドの実行中に別のテーブルのクラスター化インデックスで別のDBCC INDEXDEFRAGを手動で実行することに害はありますか?これを行うと、両方のテーブルが実際に同時に最適化されますか?

2
クラスタ化されたインデックス作成は今や必須です-なぜですか?
以前は、クラスター化インデックスを(常に)エンゲージする/回避するかどうかについての議論/ディスカッションは決定的ではありませんでした。 まあ、私はそれらが時々適切な特定の目的とコンテキストで使用されることを理解しました。 SQL Azureデータベースのクラスター化インデックスの要件: 「SQL Azureはクラスター化インデックスのないテーブルをサポートしていません。テーブルにはクラスター化インデックスが必要です。クラスター化制約なしでテーブルを作成する場合、テーブルで挿入操作を許可する前にクラスター化インデックスを作成する必要があります。」 以前の結論、根拠、および説明には適合しません。 例外なくクラスタ化インデックスのユビキタス性を厳密に課すという、これまでの説明から逃した理論的根拠は何ですか?

2
SQL Serverのシリアル化可能な分離レベルはテーブル全体をロックしますか
私と私の同僚は、シリアル化可能な分離レベルの使用の影響について説明しました。彼はそれがテーブル全体をロックしたと言いましたが、私は彼にそれが潜在的に可能であると伝えることに同意しませんでしたが、それは範囲ロックを適用しようとし、ここで説明されるように真のシリアライゼーションを適用しません:シリアライズ可能な分離レベル。 「テーブル全体をロックする」のドキュメントでも何も見つかりません:SET TRANSACTION ISOLATION LEVEL。 ドキュメントには範囲ロックに関する多くの事項が記載されているため、理論的には、テーブル内の可能な値の範囲全体をロックする範囲ロックを持つだけでテーブル全体をロックできますが、テーブルはロックされません。 ここで私は完全に間違っていますか?それは実際にテーブル全体をロックしていますか?

3
RAMまたは物理ファイルのトランザクションログ?
私はトランザクションの初心者ですが、トランザクションログに関する質問です。トランザクションをコミットすると、変更はトランザクションログに書き込まれますが、トランザクションログはRAMまたは物理ファイルにありますか?RAM内にあり、システム障害が発生した場合、明らかにRAMが再消去されるため、トランザクション情報が失われるので、コミットを回復するにはどうすればよいでしょうか。

2
非常に類似したクエリ、大幅に異なるパフォーマンス
2つの非常によく似たクエリがあります 最初のクエリ: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' and a.TargetTypeId IN (1,2,3,4,5,6,7,8,9, 11,12,13,14,15,16,17,18,19, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39, 41,42,43,44,45,46,47,48,49, 51,52,53,54,55,56,57,58,59, 61,62,63,64,65,66,67,68,69, 71,72,73,74,75,76,77,78,79) 結果:267479 計画:https : //www.brentozar.com/pastetheplan/?id=BJWTtILyS 2番目のクエリ: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' …


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