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

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

9
SQL ServerでFIZZBUZZテストを実行する最も効率的な方法は何ですか?
これは完全に話題ではないかもしれませんが、ここでは遅い日です。 FIZZ3でBUZZ均等に分割できる場合、5でFIZZBUZZ均等に分割できる場合、および均等に分割できる場合、単語を含む列で1から49の数字のリストを取得するより効率的な方法はありますか両方 3と5? 私の試みは(注意、これはあなたのプロシージャキャッシュを空にするので、プロダクションボックスで実行しないでください): DBCC FREEPROCCACHE GO /*VARIANT1*/ ;WITH t AS ( SELECT RowNum = ROW_NUMBER() OVER (ORDER BY o.object_id) FROM sys.objects o ) SELECT t.RowNum , CASE WHEN ((t.RowNum % 3) + (t.RowNum % 5)) = 0 THEN 'FIZZBUZZ' ELSE CASE WHEN t.RowNum % 3 = 0 THEN 'FIZZ' …
28 sql-server 

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句で処理できるかどうかを知りたいです。

3
クラスタ化インデックス付きのテーブルへの効率的なINSERT
TRACKING_NUMBER列にクラスター化インデックスが設定されたテーブルに行を挿入するSQLステートメントがあります。 例えば: INSERT INTO TABL_NAME (TRACKING_NUMBER, COLB, COLC) SELECT TRACKING_NUMBER, COL_B, COL_C FROM STAGING_TABLE 私の質問は-クラスター化インデックス列のSELECTステートメントでORDER BY句を使用するのに役立ちますか、またはORDER BY句に必要な追加の並べ替えによってゲインが無効になりますか?

4
運用中のデータベースでSQLプロファイラーを使用する
開発者として、私はSQLプロファイラーを頻繁に使用します。これは、コードが何をしているかを追跡し、パフォーマンスの問題を分析するのに適したデバッグツールです。 しかし、私は常に開発環境で非常に制御された方法でそれを使用してきました。 アプリケーションを起動し、特定の状態にします プロファイラーでトレースを開始する アプリケーションで特定のアクションシーケンスを実行する トレースを停止し、結果を調べます。 SQLプロファイラーは、実稼働環境で実際に使用できますか? 私の最初の懸念は、パフォーマンスが低下することです。 私の2番目の懸念は、本番環境であるため、興味深いアクション自体をトリガーしていないということです。プロファイラーを長時間実行したままにして、結果を分析する必要があります。結果セットは扱いにくくなりますか?(ディスク容量を取りすぎており、クエリが困難です)。 誰かが本番環境でSQLプロファイラーを使用していますか?


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

1
8000文字以降のデータを切り捨てるVarchar(max)フィールド
いくつかのデータを保存するフィールドがあり、フィールドはとして宣言されていvarchar(max)ます。私の理解では、これは2^31 - 1文字を保存する必要がありますが、8000文字を超えるコンテンツを入力すると、残りがカットされます。 すべてのデータが更新ステートメントに含まれていることを確認し、クエリは他のすべての場所で正常に見えますが、データを選択し直すと切り捨てられました。 データをWebサイトに表示するとき、およびSSMSを使用してデータを表示するとき、データは切り捨てられselect content from tableます。 select DATALENGTH (content) from table 8000として返されます。 これを使用してデータを設定しますupdate table set content = 'my long content' where id = 1。コンテンツには多くのHTMLが含まれていますが、問題の原因はわかりません。私がやっていることを見ることができる唯一のことは、これがユーザーが入力したコンテンツ"である''ため、すべてを置き換えることです(私が今やった理由を覚えていない)。 コンテンツ内のすべての単一引用符を削除することで、コンテンツを正しく入力することができたので、データベースではなくデータで何か奇妙なことが起こっていると思います。 varchar(max)フィールドを使用するためにクエリで特別なことをする必要がありますか? 使用:SQL Server 2008(10.50)64ビット。

2
データベースプリンシパルはデータベース内のスキーマを所有しているため、ドロップできません
データベースからプリンシパルを削除しようとしていますが、スキーマを所有しているためできません。ただし、ユーザーを編集する場合、スキーマのチェックを外すボックスは青色で削除できません。これらのスキーマからプリンシパルを削除するにはどうすればよいですか?


4
ユーザーがSQL Serverデータベースに存在するかどうかを確認します
SQL Server 2012を使用しています。ユーザーをデータベースに追加する前に、ユーザーが存在するかどうかを確認したいと思います。 これは私がテストしたものです: USE [MyDatabase] GO IF NOT EXISTS (SELECT name FROM [sys].[server_principals] WHERE name = N'IIS APPPOOL\MyWebApi AppPool') Begin CREATE USER [IIS APPPOOL\MyWebApi AppPool] FOR LOGIN [IIS APPPOOL\MyWebApi AppPool] WITH DEFAULT_SCHEMA=[dbo] end ALTER ROLE [db_owner] ADD MEMBER [IIS APPPOOL\MyWebApi AppPool] GO ただし、SELECT name FROM [sys].[server_principals]そのユーザーがに存在する場合、このコードは戻りませんMyDatabase。 ユーザーが存在するMyDatabaseかどうかを確認するにはどうすればよいですか

2
「部分一致インデックス」とは何ですか?
SQL Server 2016で導入された「外部キー参照チェック」クエリプラン演算子について詳しく学習しようとしています。これに関する情報はあまり多くありません。マイクロソフトはここでそれを発表し、私はここでそれについてブログを書きました。new演算子は、254以上の着信外部キー参照を持つ親テーブルから行を削除することで確認できます:dbfiddle link。 オペレーターの詳細には、3つの異なるカウントが表示されます。 外部キー参照カウントは、着信外部キーの数です。 一致するインデックス数は、適切なインデックスのない着信外部キーの数です。更新または削除されたテーブルがその制約に違反しないことを確認するには、子テーブルのスキャンが必要です。 部分一致インデックスカウントが何を表すのかわかりません。 このコンテキストでの部分一致インデックスとは何ですか?次のいずれかを動作させることができませんでした。 フィルター選択されたインデックス 外部キー列をINCLUDEインデックスの列として配置する 2番目のキー列として外部キー列を持つインデックス 複数列の外部キーの単一列インデックス 複数の列の外部キーに対して「インデックス結合」プランを有効にするための複数のカバーインデックスの作成 Dan Guzmanは、インデックスキーの順序が外部キーの列と異なる場合でも、複数の列の外部キーがインデックスと一致する可能性があることを指摘しました。彼のコードは、誰かが部分一致インデックスについてさらに理解するための出発点としてそれを使用できる場合に備えてここにあります。

4
あるサーバーから別のサーバーに(数百の)テーブルをコピーする(SSMSを使用)
1つのサーバーから別のサーバーにコピーする必要があるテーブルは数百(現在は466ですが、増え続けています)です。 私はこれをする必要がなかったので、どのようにアプローチするのか全くわかりません。すべてのテーブルは同じ形式です。Cart<Eight character customer number> これは、これらすべてのCart<Number>テーブルを1つのCartsテーブルにマージするより大きなプロジェクトの一部ですが、それはまったく別の質問です。 これらのすべてのテーブルをコピーするために使用できるベストプラクティスの方法はありますか?両方のサーバーのデータベース名は、それが役立つ場合は同じです。先ほど言ったように、saAからBにデータを取得するために必要なことは何でもできるようにアカウントを持っています。両方のサーバーも同じサーバーファームにあります。

1
SQL Server 2014:一貫性のない自己結合カーディナリティの推定値についての説明はありますか?
SQL Server 2014の次のクエリプランを検討してください。 クエリプランでは、自己結合ar.fId = ar.fIdにより1行の推定値が得られます。しかし、これは論理的に矛盾する推定値は、次のとおりar有する20,608行とのちょうど1つの異なる値fId(正確に統計に反映します)。したがって、この結合は行(~424MM行)の完全な外積を生成し、クエリを数時間実行します。 SQL Serverが統計と矛盾していることが非常に簡単に証明できる見積もりを思い付く理由を理解するのに苦労しています。何か案は? 初期調査と追加の詳細 ここでのPaulの回答に基づくと、結合のカーディナリティを推定するためのSQL 2012とSQL 2014の両方のヒューリスティックは、2つの同一のヒストグラムを比較する必要がある状況を簡単に処理できるようです。 トレースフラグ2363からの出力から始めましたが、それを簡単に理解できませんでした。以下は、SQL Serverがためにヒストグラムを比較していることを意味スニペットないfIdとbIdだけその用途に参加の選択を推定するためにfId?もしそうなら、それは明らかに正しくないでしょう。または、トレースフラグの出力を読み間違えていますか? Plan for computation: CSelCalcExpressionComparedToExpression( QCOL: [ar].fId x_cmpEq QCOL: [ar].fId ) Loaded histogram for column QCOL: [ar].bId from stats with id 3 Loaded histogram for column QCOL: [ar].fId from stats with id 1 Selectivity: 0 完全な再現スクリプトに含まれ、このクエリをミリ秒にまで下げるいくつかの回避策を思いついたことに注意してください。この質問は、動作の理解、今後のクエリでの動作の回避方法、およびMicrosoftに提出する必要があるバグかどうかの判断に焦点を当てています。 ここで完全なREPROスクリプトは、ここにあるトレースフラグ2363年からフル出力は、ここであなたがすぐにいっぱいスクリプトを開くことなく、それらを見たい場合はクエリとテーブル定義は次のとおりです。 …

6
データベース全体でのGETDATE()の使用の変更
オンプレミスのSQL Server 2017データベースをAzure SQLデータベースに移行する必要がありますが、かなりの制限事項があるため、いくつかの課題に直面しています。 特に、Azure SQLデータベースはUTC時間(タイムゾーンではない)でのみ機能し、現地時間を必要とするため、データベース内のGETDATE() すべての場所の使用を変更する必要があります。 私のタイムゾーンで正しく機能するローカル時間を取得するために、ユーザー定義関数を作成しました。 CREATE FUNCTION [dbo].[getlocaldate]() RETURNS datetime AS BEGIN DECLARE @D datetimeoffset; SET @D = CONVERT(datetimeoffset, SYSDATETIMEOFFSET()) AT TIME ZONE 'Pacific SA Standard Time'; RETURN(CONVERT(datetime,@D)); END 私が問題を抱えている問題はGETDATE()、すべてのビュー、ストアドプロシージャ、計算列、デフォルト値、その他の制約などでこの関数を実際に変更することです。 この変更を実装する最良の方法は何でしょうか? マネージドインスタンスの公開プレビュー中です。それでも同じ問題がGETDATE()発生するため、この問題は解決しません。Azureへの移行は必須です。このデータベースは、常にこのタイムゾーンで使用されます(使用されます)。

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