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

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

3
SSDを使用する場合、DB設計のクラスター化インデックスの概念は意味がありますか?
SQLサーバーのデータスキーマと後続のクエリ、Sproc、ビューなどを設計するとき、クラスター化インデックスの概念とディスク上のデータの順序は、SSDプラットフォームに明示的に展開されるように設計されたDB設計について考慮する必要がありますか? http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx 「クラスター化インデックスは、テーブル内のデータの物理的な順序を決定します。」 物理ディスクプラットフォームでは、「シーケンシャル」行を取得するためのデータの物理スキャンは、テーブルをシークするよりもパフォーマンスが高いため、これらを考慮する設計は理にかなっています。 SSDプラットフォームでは、すべてのデータ読み取りアクセスで同一のシークが使用されます。「物理的順序」の概念はなく、データの読み取りは、ビットが同じシリコンに格納されるという意味で「シーケンシャル」ではありません。 それでは、アプリケーションデータベースを設計する過程で、クラスタ化インデックスの考慮事項はこのプラットフォームに関連していますか? 私の最初の考えは、「順序付けられたデータ」の概念がSSDストレージとシーク/リトライバルの最適化に適用されないためではないということです。 編集:私はSQL Server がそれを作成することを知っています、私はそれが設計/最適化中にそれを考えることが理にかなっているかどうかについて哲学的です。

6
1つのSQLサーバーに配置できるデータベースの数に制限はありますか?
私は、各顧客に独自のデータベースを提供することを計画しているSaaSシステムをセットアップしています。システムは既に設定されているため、負荷が大きくなりすぎた場合に追加のサーバーに簡単にスケールアウトできます。数千、または数万の顧客を獲得したいと考えています。 ご質問 1つのSQL Serverで使用できる/する必要があるマイクロデータベースの数に実際的な制限はありますか? サーバーのパフォーマンスに影響はありますか? それぞれ100 MBのデータベースを10,000個、または1 TBのデータベースを1つ持つ方が良いでしょうか? 追加情報 「マイクロデータベース」と言うとき、「マイクロ」という意味ではありません。私たちは数千の顧客を対象にしているので、個々のデータベースは合計データストレージの1000分の1以下になります。実際には、取得する使用量に応じて、各データベースは100MB程度になります。 10,000個のデータベースを使用する主な理由は、スケーラビリティのためです。事実、システムのV1には1つのデータベースがあり、DBが負荷のかかったときに不快な瞬間がありました。 CPU、メモリ、I / Oに負担をかけていました-上記のすべて。これらの問題を修正したにもかかわらず、ある時点で、世界で最高のインデックス作成を行っていても、望みどおりに成功した場合、すべてのデータを1つの大きなホンキンに入れることはできないことに気付きました'データベース。したがって、V2ではシャーディングを行っているため、複数のDBサーバー間で負荷を分散できます。 昨年、このシャードソリューションの開発に費やしました。サーバーごとに1つのライセンスですが、AzureでVMを使用しているので、とにかく面倒を見てくれます。疑問が生じた理由は、以前は大規模な機関にのみ提供し、各機関を独自に設定していたためです。私たちの次のビジネスは、ブラウザを持っている人なら誰でもサインアップして自分のデータベースを作成できるセルフサービスモデルです。彼らのデータベースは、大規模な機関よりもはるかに小さく、はるかに多くなります。 Azure SQL Database Elastic Poolsを試しました。パフォーマンスは非常に残念でした。そのため、通常のVMに切り替えました。

9
トランザクションを使用せず、回避策を使用して1つをシミュレートするように要求
私は数年間T-SQLを開発してきましたが、常に掘り下げて、言語のすべての側面についてできる限りのことを学び続けています。私は最近新しい会社で働き始め、取引に関して奇妙な提案だと思うものを受け取りました。それらを使用しないでください。代わりに、トランザクションをシミュレートする回避策を使用してください。これは、1つのデータベースで多くのトランザクションを処理し、その後多くのブロッキングを行うDBAによるものです。私が主に作業しているデータベースはこの問題の影響を受けず、トランザクションは過去に使用されたことがあります。 トランザクションはブロックすることが本来の性質であるため、トランザクションでブロックすることが期待されていることを理解しています。しかし、各ステートメントが正常に実行されなければならない場合が多くあります。1つが失敗した場合、それらはすべてコミットに失敗する必要があります。 私は常にトランザクションの範囲をできる限り狭く保ち、常にSET XACT_ABORT ONと組み合わせて使用​​し、常にTRY / CATCH内で使用しています。 例: CREATE SCHEMA someschema; GO CREATE TABLE someschema.tableA (id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, ColA VARCHAR(10) NOT NULL ); GO CREATE TABLE someschema.tableB (id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, ColB VARCHAR(10) NOT NULL ); GO CREATE PROCEDURE someschema.ProcedureName @ColA …

5
データベースを縮小しても大丈夫ですか?
シュリンクは悪魔です。ページの順序を逆にし、皮膚がん、データの断片化、地球温暖化の原因となります。リストは続きます...つまり、100 GBのデータベースがあり、50 GBのデータを削除するとします。1つのテーブルではなく、データベース全体のレベルで古いデータを削除し、90%をカバーします。テーブル-これはデータベースを縮小するための適切なユースケースを構成しますか? そうでない場合、データベースからこのような高い割合のデータを削除した後に家をきれいにするために取る適切な手順は何ですか?インデックスの再構築と統計の更新の2つを考えることができます。ほかに何か?


3
現在のデータベースメール構成を確認するにはどうすればよいですか?
SQL Server(2008)インスタンスはメールを送信するように構成されており、すべてが正常に機能していますが、既存の構成、特にSMTPサーバーを表示する方法がわかりません。 SSMSからは、構成ウィザードのみを起動でき、オンラインでは何も見つかりません。設定方法に関する多くの情報がありますが、現在の設定の表示方法に関する情報はありません。 既存の設定を表示するにはどうすればよいですか?

5
SQL Serverでのデータの難読化
SQL Serverでのデータ難読化のベストプラクティスは何ですか? UATシステムでマスクされた生産データを使用したいと思います。 より迅速に、より高いレベルの難読化でそれを行いたい場合、どのようなアプローチをとるべきですか?人々の名と姓のスクランブルについて考えていますが、どうですか?自分で関数を作成する必要がありますか、それとも使用可能な定義済み関数がありますか?車輪の再発明に時間をかけたくありません:) 日付フィールドはどうですか?たとえば、生年月日をテーブル全体からランダムに選択してレコードに割り当てる必要がありますか、それとももっと良い方法がありますか?

2
統計を更新するタイミング
以下を行うメンテナンスプランを継承しました。 古いデータをクリーンアップする DBの整合性をチェックします データベースとトランザクションログのバックアップを実行します インデックスを再編成します 統計の更新 古いバックアップとメンテナンスプランファイルを削除する 23分間のメンテナンスプランのうち、統計の更新には13分間という驚異的な時間がかかります。この13分間、データベースへのアクセスはブロックされます(または、少なくとも、このDBから他のデータベースへのレプリケーションは一時停止されます)。 私の質問は: 統計をいつ更新する必要がありますか? これは、毎日よりも頻繁に行うべきではないように思えます。私は、不必要なメンテナンスを行うという「理由」の考え方から抜け出そうとしています。

5
ネストされたビューは優れたデータベース設計ですか?
私はずっと前にどこかで読んだことがあります。この本は、SQL Serverでネストされたビューを持つことを許可すべきではないと述べています。私たちがそれができない理由がわからないか、間違った記述を覚えているかもしれません。 学生 SELECT studentID, first_name, last_name, SchoolID, ... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 先生方 SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = 1 学校 CREATE …

8
select *は、SQL Server 2012ではまだ大きな問題ではありませんか?
過去の時代に戻って、それはやるべきことselect * from tableやselect count(*) from tableパフォーマンスの打撃のために大きなノーと考えられていました。 SQL Serverの以降のバージョンでもこれは当てはまりますか(2012年を使用していますが、質問は2008〜2014年に適用されると思います)。 編集:ここで人々は私をわずかに軽視しているように見えるので、私はこれをベンチマーク/学問的観点から見ており、それが「正しい」ことであるかどうか(もちろんそうではありません)

5
ストアドプロシージャを起動し、完了するのを待たずにすぐに戻ることはできますか?
ユーザーが手動で実行して、1日を通して常に使用されるレポートの更新された数値を取得できるストアドプロシージャがあります。 この最初のストアドプロシージャから取得した数値に基づいているため、最初のストアドプロシージャの実行後に実行する必要がある2番目のストアドプロシージャがありますが、実行に時間がかかり、別のプロセスのためです。この2番目のストアドプロシージャが実行されるまで、ユーザーを待機させます。 1つのストアドプロシージャで2番目のストアドプロシージャを開始し、結果を待たずにすぐに戻る方法はありますか? SQL Server 2005を使用しています。


3
Transact-SQLクエリの文字列の前のNプレフィックス
Transact-SQLクエリで文字列の前にNプレフィックスを使用する必要がある場合、教えてください。私はこのようなクエリを使用して結果を取得しないデータベースで作業を開始しました SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%' パターンをに変更するまでN'%а_pattern%'。過去にこのプレフィックスを追加する必要がなかったので、興味があります。a_fieldはと定義されてnvarchar(255)いますが、その理由は他の何かだと思います。

10
SELECT INTOを使用してテーブルをコピーし、IDENTITYプロパティを無視するにはどうすればよいですか?
私は次のようなID列を持つテーブルを持っています: create table with_id ( id int identity(1,1), val varchar(30) ); これはよく知られています select * into copy_from_with_id_1 from with_id; idにIDを持つcopy_from_with_id_1になります。 次のスタックオーバーフローの質問では、すべての列を明示的にリストすることに言及しています。 やってみよう select id, val into copy_from_with_id_2 from with_id; この場合でもidはID列です。 私が欲しいのはテーブルのようなものです create table without_id ( id int, val varchar(30) );

2
宣言された結合列の順序を変更するとソートが導入されるのはなぜですか?
同じ名前、タイプ、およびインデックスキー列を持つ2つのテーブルがあります。それらの1つには一意のクラスター化インデックスがあり、もう1つには非一意があります。 テストのセットアップ いくつかの現実的な統計を含むセットアップスクリプト: DROP TABLE IF EXISTS #left; DROP TABLE IF EXISTS #right; CREATE TABLE #left ( a char(4) NOT NULL, b char(2) NOT NULL, c varchar(13) NOT NULL, d bit NOT NULL, e char(4) NOT NULL, f char(25) NULL, g char(25) NOT NULL, h char(25) NULL --- and a …

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