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

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

1
SQLSMSでSSMSから生成されたTSQLスクリプトを実行しています。引用に失敗
SQL Server Management Studioの「スクリプトの生成」ツールで生成されたスクリプトを実行して、データベースをマシンに配置しようとしています。 これが私が発行したコマンドです: sqlcmd -S LOCALHOST\sqlexpress -I -U user -P ******** -i C:\Rollouts\NI-9-25-2012_10-42-AM\Rollout.sql > rolloutlog.txt 次のようなエラーが表示されます。 Sqlcmd:エラー:ファイル 'C:\ Rollouts \ NI-9-25-2012_10-42-AM \ Rollout.sql'のコマンド '' 'の近くの39488行で構文エラー。 この行をテキストエディタで表示すると、すべての兆候が引用符の問題を示しています。 問題の行は次のようになります。 $( ''。cat-menu-new '')。slideDown( '' slow ''); スクリプト内の引用符をサポートするためにスクリプトを実行または生成する必要があるスイッチはありますか?

3
クエリ時にSSRSはテーブルをロックしますか?
私の上級DBAは、デフォルトではSQLクエリを実行してもテーブルはロックされないと言っていました。 SQL Server Reporting Services(SSRS)レポートにいくつかの問題がありましたが、ロックおよびいくつかのエラーが発生しているようです。 私はググリングをしましたが、何も見つけることができませんでした。 SSRSレポートは、クエリ対象のテーブルをロックしますか? この動作を具体的に文書化したMSDNドキュメントはありますか?

1
OPTION FORCE ORDERにより、行が削除されるまでパフォーマンスが向上します
やや複雑なSQL Server 2008クエリ(約200行のかなり高密度のSQL)があり、必要なときに実行されませんでした。時間の経過とともに、パフォーマンスは約0.5秒から約2秒に低下しました。 実行計画を見ると、結合を並べ替えることでパフォーマンスが向上することは明らかでした。私はそうしました、そしてそれは...約0.3秒にまで減少しました。これで、クエリに「OPTION FORCE ORDER」というヒントが追加されました。 今日、私はデータベースをクリーンアップします。行の約20%をアーカイブし、行を削除する以外は関連するデータベースでアクションを実行しません...実行プランは完全にホースされます。特定のサブツリーが返す行数を完全に誤って判断し、(たとえば)次のものを置き換えます。 <Hash> と <NestedLoops Optimized='false' WithUnorderedPrefetch='true'> これで、クエリ時間が約0.3秒から約18秒に急上昇します。(!)行を削除したからといって。クエリヒントを削除すると、クエリ時間は約2秒に戻ります。良いが悪い。 データベースを複数の場所とサーバーに復元した後、問題を再現しました。各テーブルから行の約20%を削除するだけで、常にこの問題が発生します。 強制結合順序がクエリの見積もりを完全に不正確にする(したがってクエリの時間を予測できない)のは、これが正常ですか? 最適ではないクエリのパフォーマンスを受け入れる必要があるか、それともタカのように見て、頻繁に手動でクエリのヒントを編集する必要があると思いますか?または、すべての結合についてもヒントがありますか?.3sから2sは大ヒットです。 行を削除した後にオプティマイザが停止した理由は明らかですか?たとえば、「はい、サンプルスキャンを実行しました。データ履歴の前半でほとんどの行をアーカイブしたため、サンプルはスパースな結果を生成したため、ソートされたハッシュ演算の必要性を過小評価していました」 実行計画を見たい場合は、投稿できる場所を提案してください。そうでなければ、私は最も素晴らしいビットをサンプリングしました。これが根本的な誤推定です。括弧内の数字は(推定:実際の)行です。 / Clustered Index Scan (908:7229) Nested Loops (Inner Join) --< \ NonClustered Index Seek (1:7229) 内部ループは908行をスキャンすると予想されますが、代わりに52,258,441をスキャンすることに注意してください。正確であれば、このブランチは12秒ではなく、約2ミリ秒で実行されたはずです。行を削除する前に、この内部結合の推定は合計係数2だけオフであり、2つのクラスター化インデックスのハッシュ一致として実行されました。

1
sp_executeは、タイプ 'int'のパラメータ '@handle'を予期しています
宛先データベースにテーブルが存在するかどうかをストアドプロシージャでチェックインしようとしています。そうでない場合は、ソースデータベースのinformation_schemaテーブルを使用してテーブルを作成します。しかし、sp_executeを使用して、テーブルが存在する場合に返してみると、エラープロシージャで型 'int'のパラメーター '@handle'が予期されます。 @handleパラメータを使用していません。誰かがこのエラーの意味を教えてもらえますか?なぜ私がそれを受け取っているのですか?私のコードの関連部分は以下です。 DECLARE @SQL NVARCHAR(MAX), @Parameters NVARCHAR(4000), @TableNotExists INT, @SourceTable NVARCHAR(200), @DestDB NVARCHAR(200) BEGIN SET @SourceTable = 'table' SET @DestDB = 'database' SET @Parameters = N'@SourceTableIN NVARCHAR(200), @TableNotExistsOut INT OUTPUT' SET @SQL = N'USE [' + @DestDB + '] IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE …

2
SQL Serverは行ごとに関数を1回評価しますか?
次のようなクエリがあります。 SELECT col1 FROM MyTable WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) BETWEEN col2 AND col3 ; これにより、次のような実行プランのツールチップが表示されます。 dateadd求める述語の一部は、クエリ内のすべての行に対して実行されますか?または、SQL Serverはクエリ全体の値を1回計算しますか?

1
SPARSEを追加すると、テーブルがはるかに大きくなります
約5m行の汎用ログテーブルがあります。 イベントタイプを格納する「厳密に型指定された」フィールドと、イベントに関連するデータを含む一連の「緩やかに型指定された」列があります。つまり、これらの「緩やかに型付けされた」列の意味は、イベントの型によって異なります。 これらの列は次のように定義されます。 USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …

2
XMLデータを格納するデータ型:VARCHAR(MAX)またはXML
SQL Server 2008を使用して新しいリソースセットのスキーマを定義しています...この場合、各レコード(行など)はXMLフラグメントを格納する必要があります。時々; 頻繁ではありませんが; 要素と属性の値を見つけるには、XMLをクエリする必要があります。自分の考案に任せれば、xmlデータ型を使用する傾向がありますが、これは問題があると考えられています。それが私の質問につながります。 このシナリオを前提として、XML列にxmlを格納するか、varchar(MAX)列にXMLを格納するかを決定する際に考慮すべき要素は何ですか。 それが役立つ場合...ここにいくつかの追加の詳細があります: これらのフラグメントのスキーマ(XSDなど)の使用に関して決定は行われていません フラグメントのサイズは、小さいものから非常に大きいものまでさまざまです。 すべてのXMLは整形式です 1日の間に、最大3か月間必要なオンラインクエリサポートで最大10,000個のフラグメントが収集されます XMLに対するクエリは1日を通して発生しますが、このタイプの同時クエリがほとんどないため、軽いままです。

1
正確なクエリパフォーマンスを得るには?
ストアドプロシージャのパフォーマンスを改善しようとしています。SPを実行すると、何かがキャッシュされているかのように、ほぼ瞬時に終了します。SSMSでSPを実行する前に、次の2行のSQLを使用するように言われました。 DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE 上記の2行のコードでSPを実行すると、SPは約8秒で終了します。しかし、これは本当に私に本当の実行時間を与えていますか?どうやって知るの?

4
SQL Server 2008 R2でテーブルを使用しているストアドプロシージャまたはトリガーを知るにはどうすればよいですか?
これは、私がチェックしているDBに、ユーザー履歴を保持するアーカイブテーブルがあり、しばらくするとこのテーブルから行を削除するトリガーまたはストアプロシージャがあり、同じように、私はDBを設計しませんでした。このDBを使用するアプリケーションのメンテナンスを行っているだけなので、これらのストアドプロシージャまたはトリガーの名前がわかりません。このストアドプロシージャを探します。またはトリガーして、コードを確認し、この「ユーザー履歴」をテーブルに長く残すようにコードを変更します。 誰かが「sysobjects」テーブルをチェックするように言われました。そこでは、テーブルの同じ名前の何かが実際に表示されますが、これは私が取得できた唯一の情報です。アドバイスはありますか? ありがとうございました。

5
SQL 2005とSQL 2008R2でクエリの実行が異なる
私のオフィスには、見苦しいクエリがありますが、運用環境と開発環境(それぞれ20秒と4秒)でかなりうまく実行されます。ただし、テスト環境では4時間以上かかります。SQL2005(+最新のパッチ)は、本番環境および開発環境で実行されています。SQL2008R2はテストで実行されています。 クエリプランを確認したところ、SQL2008R2はリンクサーバーから返された行を格納するために、テーブルスプール(レイジースプール)を介してTempDBを使用していることがわかります。次のステップは、クエリの96.3%を消費しているネストされたループ(左反準結合)を示しています。2つのオペレーター間の境界線は5,398MBです。 SQL 2005のクエリプランでは、tempdbの使用とLeft Anti Semi Joinの使用は示されていません。 以下はサニタイズされたコードであり、実行計画は2005年の計画を上に、2008R2は下を計画しています。 劇的なスローダウンと変化の原因は何ですか?別の実行プランが表示されることを期待していたので、気になりません。クエリ時間の劇的なスローダウンが私を悩ませています。 2008R2バージョンはtempdbを使用しているため、基盤となるハードウェアを確認する必要がありますか?その使用を最適化する方法を確認する必要がありますか? クエリを記述するより良い方法はありますか? 助けてくれてありがとう。 INSERT INTO Table1_GroupLock (iGroupID, dLockedDate) SELECT Table1.iGroupID, GETDATE() FROM Table1 WHERE NOT EXISTS ( SELECT 1 FROM LinkedServer.Database.Table2 Alias2 WHERE ( Alias2.FirstName + Alias2.LastName = dbo.fnRemoveNonLetter(Table1.FullName) AND NOT dbo.fnRemoveNonLetter(Table1.FullName) IS NULL AND NOT Alias2.FirstName IS NULL AND NOT …

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 …

2
SQL Serverがインデックス付きビューの列がNULL可能ではないことを認識できるようにするにはどうすればよいですか?
SQL Server 2008で次のインデックス付きビューが定義されています(テスト目的でgistから作業スキーマをダウンロードできます)。 CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id、currency_id、およびtransaction_amountすべてのように定義されているNOT NULLの列dbo.transactions。ただし、Management Studioのオブジェクトエクスプローラーでビュー定義を見ると、ビューの両方の列balance_amountと-able列transaction_countとしてマークさNULLれています。 私はいくつかのディスカッションを調べましたが、これはそれらの中で最も関連性が高く、SQL Serverがビュー列が常にであることをSQL Serverが認識するのに役立つ可能性のある関数のシャッフルを示唆していますNOT NULL。ただし、インデックス付きビューでは集約関数の式(たとえば、ISNULL()over …

3
SQL Serverエージェントジョブのチェーン
SQLサーバーエージェントでジョブをセットアップしたそれぞれにいくつかのワークパッケージがあります。時々私はすべて一緒に実行する必要があります。それらをすべて特定の順序で実行するための最良の方法は何ですか?SQLサーバーエージェントが、実行するジョブステップとしてジョブを含めることができないことに少し驚いています。私は試しました

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

5
何百万もの行があるテーブルの列定義を変更する最も効率的な方法は何ですか
何百万もの行を含むテーブルで、列をNOT NULLからNULLに変更する必要があります。私は簡単に試しました alter table Table1 ALTER COLUMN Column1 XML NULL しかし、それは永遠にかかります。だからここに私の質問があります: 変更を適用するのになぜこれほど時間がかかるのですか? それを行うより良い方法はありますか?

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