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

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

4
インデックスに列を含めるための厳格なルール
非クラスター化インデックスに含める列とその順序を決定するための厳格なルールはありますか?私はちょうどこの投稿https://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index を読んでいて、次のクエリでそれを見つけました: SELECT EmployeeID, DepartmentID, LastName FROM Employee WHERE DepartmentID = 5 ポスターは、次のようなインデックスを作成することを提案しました。 CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee(EmployeeID, DepartmentID) INCLUDE (Lastname) ここに、なぜこのようなインデックスを作成できないのかという質問があります CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, DepartmentID, LastName) または CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, LastName) INCLUDE (DepartmentID) そして、LastName列を含めることを決定するためにポスターを導くものは何ですか。他の列はなぜですか?そして、列をどの順序で保持するかをどのように決定するのですか?

2
SQL Serverの予測不能な選択結果(dbmsエラー?)
以下に簡単な例を示します。これは奇妙な結果を返しますが、それは予測不可能であり、チームで説明することはできません。私たちは何か間違ったことをしていますか、それともSQL Serverエラーですか? 調査の結果、検索領域をsubqueryのunion句に減らしました。これにより、「men」テーブルから1つのレコードが選択されます。 SQL Server 2000では正常に機能しますが(12行を返します)、2008および2012では1行のみを返します。 create table dual (dummy int) insert into dual values (0) create table men ( man_id int, wife_id int ) -- there are 12 men, 6 married insert into men values (1, 1) insert into men values (2, 2) insert into men values (3, null) …

8
選択結果をcsvファイルに書き込む
SELECTクエリの結果をcsvファイルに書き込む必要があります。SQL Server 2008 r2でT-SQLを使用してどのように実行できますか?SSISで実行できることは知っていますが、何らかの理由でこのオプションはありません。 以下の記事で推奨されるprocを使用しようとしましたが、procを実行すると、このprocで呼び出されるsys.sp_OACreateおよびsys.sp_OADestroyを実行できないというSQLのエラーが発生します。 これらのコンポーネントを有効にする方法を知っていますか、T-SQLを使用してファイルに書き込むより良い方法を知っていますか? 前もって感謝します。

6
SQL Serverで可能な限り最小のバックアップ
毎日、WAN経由でSQL Serverバックアップを出荷しています。永久に時間がかからないように、これらのバックアップのサイズを最小化する必要があります。 バックアッププロセスに少し時間がかかるかどうかは気にしません。現状では、30ギガの圧縮バックアップをWAN経由で移動する必要があり、10時間以上かかります。 毎日のより小さなバックアップを取得する必要がある2つのオプションがあります。 ログ配布。これは、DRプロセスを再構築する必要があることを意味します。 データベースから情報を取り除き、反対側で再構築します(非クラスター化インデックスを削除し、クラスター化インデックスを100%でパックします-反対側で再構築します) 両方とも、私たちの側からかなりの量の作業を伴います。SQL Server 2008 proを使用しています。すべてのバックアップが圧縮されています。 オプション(2)と同等のバックアップサイズを提供できる商用製品はありますか? そこにあるの包括的な私たちは(2)を達成することができますそこにスクリプトが?(インデックス付きビュー、フィルター処理されたインデックス、外部キーなどの処理)

4
データベース内のすべての列名をリストまたは検索するにはどうすればよいですか?
データベースにある列の名前の文字列を検索したい。 私はメンテナンスプロジェクトに取り組んでおり、扱っているデータベースの一部には150を超えるテーブルがあるため、これをすばやく行う方法を探しています。 おすすめは何ですか?

5
以前に高速なSQLクエリの実行が遅くなった場合、どこで問題の原因を見つけることができますか?
バックグラウンド 私は、約12の異なる「テーブル」を結合および/または左結合するSQL Server 2008 R2に対してクエリを実行しています。データベースはかなり大きく、5000万行を超える多くのテーブルと約300の異なるテーブルがあります。全国に10の倉庫がある大企業向けです。すべての倉庫は、データベースに対して読み取りと書き込みを行います。だから、かなり大きくてかなり忙しい。 私が問題を抱えているクエリは次のようになります: select t1.something, t2.something, etc. from Table1 t1 inner join Table2 t2 on t1.id = t2.t1id left outer join (select * from table 3) t3 on t3.t1id = t1.t1id [etc]... where t1.something = 123 結合の1つが非相関サブクエリ上にあることに注意してください。 問題は、今朝から、システムに変更を加えずに(私または私のチームの誰もが知っている)、クエリの実行に通常約2分かかり、実行に1時間半かかることです。まったく走った。データベースの残りの部分はうまくいっています。私は通常実行するsprocからこのクエリを取り出し、同じスローネスでハードコードされたパラメータ変数を使用してSSMSで実行しました。 奇妙なことに、非相関サブクエリを取得して一時テーブルにスローし、サブクエリの代わりにそれを使用すると、クエリは正常に実行されます。また、このコードをクエリの最後に追加すると、クエリが非常によく実行されます(これは私にとって最も奇妙なことです)。 and t.name like '%' これらの小さな実験から、スローダウンの理由は、SQLのキャッシュされた実行計画の設定方法によるものであると(おそらく間違って)結論付けました-クエリが少し異なる場合、新しい実行計画を作成する必要があります。 私の質問は次のとおりです:高速で実行されていたクエリが深夜に突然遅くなり、このクエリ以外に何も影響を受けない場合、どのようにトラブルシューティングし、今後発生しないようにするのですか? ?SQLが内部で何をして非常に遅くするかを知るには(悪いクエリが実行された場合、実行計画は取得できますが、実行されません-予想される実行計画が何かを与えるでしょうか?)この問題が実行計画に関連している場合、SQLが本当にくだらない実行計画は良いアイデアだと考えないようにするにはどうすればよいですか? また、これはパラメータースニッフィングの問題ではありません。SSMSで変数をハードコーディングした場合でも、パフォーマンスが低下するため、これは以前見たことがありますが、そうではありません。

5
なぜvarcharデータ型がまだあるのですか?
私のデータベースの多くには、varcharとして定義されたフィールドがあります。私はアメリカに住んで働いているので、これはそれほど問題ではありませんでした(存在する唯一の言語は「アメリカ人」です。ahem) 約5年間データベースを操作した後、最終的にvarcharフィールドの性質が限られているという問題に遭遇し、nvarcharとしてデータを保存するためにフィールドを変更する必要があります。テーブルに別の更新を行い、varcharフィールドをnvarcharに変換しなければならなかった後、私は考えました-なぜこのようにまだ行うのですか?私はずっと前から、新しいテキストフィールドをすべてvarcharではなくnvarcharに定義するという精神的な決定をしました。これは、10年前に学校にいたときに教科書から学んだことです。 2011年で、昨年SQL Serverの新しいリリースがありました。代わりにnvarcharを使用できる/すべきであるのに、なぜvarcharデータ型をサポートし続けるのですか? nvarcharsはvarcharsの「2倍」であるとよく言われることを知っているので、varcarを保持するための1つの論点として、ストレージスペースの使用が考えられます。 ただし、今日のユーザーは、ストレージスペースを節約したい場合、デフォルトのUTF-16ではなくUTF-8としてデータを保存するようにnvarcharを定義できます。これにより、主に望ましい場合は8ビットエンコーディングが可能になりますが、DBに挿入される2〜8バイトのまれな文字が何も破損しないことが保証されます。 何か不足していますか?過去15〜20年でこれが変わっていない理由はありますか?

4
テーブルの定義内の列の順序は重要ですか?
テーブルを定義するとき、論理グループ内の列とグループ自体を目的別に並べると便利です。テーブル内の列の論理的な順序は、開発者に意味を伝え、良いスタイルの要素です。 それは明らかです。 ただし、テーブル内の列の論理的な順序がストレージレイヤーでの物理的な順序に影響を与えるかどうか、または気になるその他の影響があるかどうかは明らかではありません。 スタイルへの影響とは別に、列の順序は重要ですか? これについてStack Overflowに質問がありますが、信頼できる答えがありません。

1
特定の複数列インデックスの代わりに、多くの単一フィールドインデックスを使用する必要がありますか?
この質問は、SQL Serverのインデックス作成手法の有効性に関するものです。「インデックスの交差点」として知られていると思います。 多数のパフォーマンスと安定性の問題がある既存のSQL Server(2008)アプリケーションを使用しています。開発者は、インデックス作成に関して奇妙なことをしました。私はこれらの問題に関する決定的なベンチマークを得ることができませんでしたし、インターネット上で本当に良いドキュメントを見つけることもできませんでした。 テーブルには多くの検索可能な列があります。開発者は、検索可能な各列に単一の列インデックスを作成しました。理論は、SQL Serverはこれらの各インデックスを結合(交差)して、ほとんどの状況でテーブルに効率的にアクセスできるというものでした。簡単な例を次に示します(実際のテーブルにはさらにフィールドがあります)。 CREATE TABLE [dbo].[FatTable]( [id] [bigint] IDENTITY(1,1) NOT NULL, [col1] [nchar](12) NOT NULL, [col2] [int] NOT NULL, [col3] [varchar](2000) NOT NULL, ... CREATE NONCLUSTERED INDEX [IndexCol1] ON [dbo].[FatTable] ( [col1] ASC ) CREATE NONCLUSTERED INDEX [IndexCol2] ON [dbo].[FatTable] ( [col2] ASC ) select * from …


5
SQL ServerでTimeZoneを適切に処理する方法は?
私のローカル開発サーバーは中東にありますが、本番サーバーは英国にあります。 ユーザーにタイムゾーンで日付を表示する必要があります。たとえば、ユーザーがサウジアラビアにいる場合、サウジアラビアの形式に従って時間を表示する必要があります。 TimeZoneという新しいデータベーステーブルを作成し、UTCで時間を保存する必要がありますか?

2
ISO WeekとSQL Server Week
さて、今週と先週の比較を行うレポートがありますが、お客様はデータが「ファンキー」であることに気付きました。さらに調査した結果、ISO規格に従って数週間は正しく動作していませんでした。このスクリプトをテストケースとして実行しました。 SET DATEFIRST 1 SELECT DATEPART(WEEK, '3/26/13') , DATEPART(WEEK, '3/27/12') , DATEPART(WEEK, '3/20/12') , DATEPART(WEEK, '1/2/12') SELECT DATEPART(ISO_WEEK, '3/26/13') , DATEPART(ISO_WEEK, '3/27/12') , DATEPART(ISO_WEEK, '3/20/12') , DATEPART(ISO_WEEK, '1/2/12') 実行すると、これらの結果が得られました。 これは奇妙だと思ったので、さらに掘り下げてみると、SQL Serverは1月1日を年の最初の週としてカウントし、ISOは1月の最初の日曜日を年の最初の週としてカウントします。 質問は最終的に2倍になります。質問1これはなぜですか?質問2これを変更する方法はあるので、ISO_Weekどこでも使用するためにすべてのコードを変更する必要はありませんか?

3
ストアドプロシージャの出力パラメーターとしてのテーブル値パラメーター
ストアドプロシージャの出力パラメーターとして使用されるTable-Valuedパラメーターは可能ですか? ここに、私がコードでやりたいこと /*First I create MY type */ CREATE TYPE typ_test AS TABLE ( id int not null ,name varchar(50) not null ,value varchar(50) not null PRIMARY KEY (id) ) GO --Now I want to create stored procedu whic is going to send output type I created, --But it looks …

2
再帰共通テーブル式でEXCEPTを使用する
次のクエリが無限行を返すのはなぜですか?EXCEPT句が再帰を終了すると予想していました。 with cte as ( select * from ( values(1),(2),(3),(4),(5) ) v (a) ) ,r as ( select a from cte where a in (1,2,3) union all select a from ( select a from cte except select a from r ) x ) select a from r Stack Overflow に関する質問に答えようとしているときに、私はこれに出会いました。

5
条件の論理演算子OR ANDおよびWHEREの条件の順序
これらの2つのステートメントを調べてみましょう。 IF (CONDITION 1) OR (CONDITION 2) ... IF (CONDITION 3) AND (CONDITION 4) ... 場合はCONDITION 1、IS TRUE、だろうCONDITION 2チェックしますか? 場合はCONDITION 3、IS FALSE、だろうCONDITION 4チェックしますか? 条件についてはどうですかWHERE:SQL ServerエンジンはWHERE句内のすべての条件を最適化しますか?SQL Serverオプティマイザーが条件を正しい方法で解決するために、プログラマは条件を正しい順序で配置する必要がありますか? 追加: リンクを提供してくれたジャックに感謝します。t-sqlコードからの驚きです。 IF 1/0 = 1 OR 1 = 1 SELECT 'True' AS result ELSE SELECT 'False' AS result IF 1/0 = 1 AND …

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