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

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

1
Xpathのみを使用してSQLサーバーの空のXMLタグからnullを返す方法は?
レコードに関するさまざまなユーザー定義データポイントをXML列に格納するアプリケーションがあります。これらがどのように保存または更新されるかは、私には制御できません。 列をクエリすると、3つの値のいずれかが返されます。 値 ヌル 空の文字列 $ 64質問 xpathを使用して、空の文字列をnullとして返したいのですが。 nullを空の文字列として返すことに関する多くの答えを見つけましたが、この方法では何も起こりません。 それらは、誰かが値を削除したときにそのようになり、タグを削除するのではなく、タグにブランクになり<value />ます。nullは、値が設定されていない場合に発生します。xsi:nilは含まれていません。 私はケースステートメントでそれをしました: select so.SalesOrderId, Case when sopc.value('(Value)[1]','smalldatetime') IS null then Null when sopc.value('(Value)[1]','smalldatetime') ='' then Null Else sopc.value('(Value)[1]','smalldatetime') End as sopc From SalesOrders so Outer apply so.CustomColumns.nodes('/CustomColumnsCollection/CustomColumn[Name="ProjCompleted"]') sopc(sopc) しかし、これは非効率に感じられ、これが唯一の列ではないため、コードが長くなり、保守が難しくなります。 編集してサンプルデータを含めます SalesOrderId CustomColumns SO 1 "<CustomColumnsCollection> <CustomColumn> <Name>ProjCompleted</Name> <DataType>1</DataType> <Value /> …

1
HEAPを再構築するとダウンタイムが発生しますか?
これは少し恥ずかしい質問です。長年これを見逃していたとは思えません。 401ヒープテーブルを持つベンダーサードパーティデータベースがあります。私は最近、Brent Ozarのスクリプトとセットアップsp_BlitzFirstを使用して15分ごとに実行し、待機統計などを収集しました。 明らかになったのは、24時間にわたって実行されるたびにForwarded Recordsを修正するように指示することでした。DMV全体でクエリを実行し、150,000を超える転送されたレコード値を持ついくつかのテーブルを取得した読者に、おそらく何がショックになるでしょう。 これを修正することは、テーブル全体にクラスター化インデックスを作成すること、または実行するための一時的な回避策として理解していますALTER TABLE [tablename] REBUILD。 しかし、私が見つけられなかったのは、これがテーブルをオフラインにするかどうか、およびこのコマンドを実行する前に知っておくべき他の問題があるかどうかです。 2008 R2のEnterprise Editionを使用していますが、この方法で実行すると停止の必要がなくなるのでしょうか。 ALTER TABLE [tablename] REBUILD WITH (ONLINE = ON); 誰かこれについて何か経験がありますか?

1
重複なしでテーブルから返された重複レコード
私のシステムで作業を分散するために使用されるビジーキューテーブルをクエリするストアドプロシージャがあります。問題のテーブルにはWorkIDの主キーがあり、重複はありません。 クエリの簡略版は次のとおりです。 INSERT INTO #TempWorkIDs (WorkID) SELECT W.WorkID FROM dbo.WorkTable W WHERE (@bool_param = 0 AND ((W.InProgress = 0 AND ISNULL(W.UserID, -1) != @userid_param AND (@bool_filtered = 0 OR W.TypeID IN (SELECT TypeID FROM #Types AS t))) OR (@bool_param = 1 AND W.InProgress = 1 AND W.UserID != @userid_param) OR …

3
新しく作成された列に挿入することはできません
私はこのような簡単なテストテーブルを持っています: CREATE TABLE MyTable (x INT); トランザクション内で、列を追加してから、新しく作成した列に挿入しようとしています。 BEGIN TRANSACTION; PRINT 'Adding column, ''SupplementalDividends'', to MyTable table.'; ALTER TABLE MyTable ADD SupplementalDividends DECIMAL(18,6); PRINT 'Column added successfully....'; PRINT 'Ready to INSERT into MyTable ...'; INSERT INTO MyTable (x, SupplementalDividends) VALUES (1, 3.2); PRINT '**** CHANGES COMPLETE -- COMMITTING.'; COMMIT TRANSACTION; 上記のコードを実行すると、問題はエラーメッセージになります。 …

4
SSMSでパスワードを記憶するチェックボックスを無効にすることはできますか?
いくつかのテスト目的で、オフィスの4〜5人の従業員に同じラップトップを提供していることがあります(高価なライセンスツールがそのラップトップにのみ存在するため)。また、資格情報を保存するためにSSMSの[ パスワードを記憶する ] チェックボックスをクリックしないように依頼しました。。 ただし、誤ってそのチェックボックスを誤ってクリックする人はほとんどいないSqlStudio.binため、問題を解決するためにをクリアする必要があります。その代わりに、その特定のラップトップのSSMSで[ パスワードを保存する ]オプションを無効にすると便利です。 SSMSでパスワードを記憶するチェックボックスを無効にすることはできますか? 予想される動作は次のとおりです。

3
SQL Server 2008 R2へのアップグレードに伴うリスク
バージョン2005から2008 R2にアップグレードする必要のあるSQL Serverは多数あります。Microsoftがサポートを終了するため、今年の半ばまでに作業が予定されています。 2005 SQL ServerはすべてSP3とSP4であり、Windows Server 2003で実行されています(サポートはすでに終了していますが、もう1年間は例外です)。 これらのサーバーには、レプリケーション(トランザクション)、ログ配布、レポートサービス、およびSSISパッケージを実行する統合サーバーが含まれます。 ここでの私の質問はどのようにではなく、関連するリスクや、このアップグレードを計画する前に実行できる事前チェックについて知りたいですか? また、インプレースアップグレードは、この移行/アップグレードを並行して行うよりも優れた計画でしょうか?


2
SSMSなどの個別の行数を取得するにはどうすればよいですか?
InfoMessageイベントでとエラー出力ExectueNonQueryをキャッチすることPRINTを含め、を介してストアドプロシージャを実行しているクライアントc#プログラムがあります。正常に動作しますが、変なことに気づきました。 SSMSからストアドプロシージャを実行すると、[メッセージ]タブで実行された個々のSQLステートメントの行数が表示されます(InfoMessageから送信されたかのように)。ただし、他の同じ出力はすべてキャッチしますが、プログラムはこれらのメッセージを表示しません。代わりに、ExecuteNonQuery関数の結果で影響を受ける行を返します。これは、個々の行カウントのすべての合計です(これは一種の役に立たないものです)。 たとえば、この手順は次のとおりです。 use [tempdb] go SELECT * INTO MyCols FROM sys.columns go CREATE PROC foo As UPDATE MyCols SET name = name + N'' -- SSMS shows (662 row(s) affected) UPDATE MyCols SET name = name + N'' WHERE name like '%x%' -- SSMS shows (59 row(s) affected) PRINT …

6
インデックスの再構築時間は断片化レベルに依存しますか?
インデックスの再構築に必要な時間は、断片化のレベルに依存していますか? 80%フラグメント化されたインデックスの再構築は、40%フラグメント化された同じインデックスの再構築に1分かかる場合、約2分かかりますか? 特定の状況でどのアクションが必要かについてではなく、必要なアクションを実行するために必要となる可能性があるRUNTIME(たとえば、秒単位)を求めています。インデックスの再編成または再構築/統計の更新を行う必要がある場合の基本的なベストプラクティスを知っています。 この質問では、REORGおよびREORGとREBUILDの違いについては尋ねられません。 背景:さまざまなインデックスメンテナンスジョブ(毎晩、週末は重いジョブ)のセットアップのため、毎日の「非常に負荷の高い」オフラインインデックスメンテナンスジョブは、中程度の断片化されたインデックスでより適切に実行して、オフタイムが小さい-またはそれは問題ではなく、80%フラグメント化されたインデックスでの再構築は、40%フラグメント化された同じインデックスでの同じ操作と同じオフタイムを取る可能性があります。 私は提案に従い、何が起こっているのかを自分で見つけようとしました。私の実験的なセットアップ:他にNOTHINGを実行し、他の誰にも使用されていないテストサーバーで、いくつかの追加の列と異なるデータ型[2つの数値、9つの日時、 2 varchar(1000)]と単純に行を追加しました。提示されたテストでは、約305,000行を追加しました。 次に、更新コマンドを使用して、整数値でフィルタリングする行の範囲をランダムに更新し、文字列値を変更してVarChar列の1つを変更し、断片化を作成しました。その後、で現在のavg_fragmentation_in_percentレベルを確認しましたsys.dm_db_index_physical_stats。ベンチマークに「新しい」断片化を作成するたびに、この値を含めてこの値を追加しました。これにphysical_page_countは、次の図を構成する記録が含まれています。 それから私は走りました:そして私の録音に使用することによってAlter index ... Rebuild with (online=on); つかみましCPU timeたSTATISTICS TIME ON。 私の期待:私は少なくとも、断片化レベルとCPU時間の間の依存関係を示す一種の線形曲線の兆候を見ることを期待していました。 これはそうではありません。この手順が良い結果に本当に適切かどうかはわかりません。行/ページの数が少なすぎるのではないですか? しかし、結果は、私の元の質問に対する答えが間違いなくNOになることを示しています。SQL Serverがインデックスを再構築するために必要なCPU時間は、断片化レベルにも基になるインデックスのページ数にも依存していないようです。 最初のグラフは、以前の断片化レベルと比較した、インデックスの再構築に必要なCPU時間を示しています。ご覧のとおり、平均線は比較的一定であり、断片化と必要なCPU時間の間に観察可能な関係はまったくありません。 再構築に多少の時間を必要とする可能性がある、更新後のインデックス内のページ数の変化の影響を尊重するために、FRAGMENTATION LEVEL * PAGES COUNTを計算し、必要なCPU時間の関係を示す2番目のグラフでこの値を使用しました対断片化とページ数。 ご覧のとおり、これは、ページ数が変わっても、再構築に必要な時間がフラグメント化の影響を受けることを示していません。 これらのステートメントを作成した後、巨大で高度にフラグメント化されたインデックスを再構築するために必要なCPU時間は行の数によってのみ影響を受ける可能性があるため、手順が間違っていると思います。私はこの理論を本当に信じていません。 だから、私は本当にこれを絶対に知りたいので、それ以上のコメントや提案は大歓迎です。

5
動的SQLを使用したデータベース間の切り替え
複数のデータベース間でさまざまなコマンドを実行するプロセスがありますが、動的SQLを使用して 'use @var'でDBを変更しても、実際にはデータベースは変更されません。 これを[test_db]で実行: declare @currentDB varchar(max) declare @sql varchar(max) set @currentDB = DB_NAME() set @sql = 'use [' + @currentDB +']' use master exec(@sql) select DB_NAME() [マスター]を現在のデータベース名として返します- use [test_db]動的ではなくコマンドとして入力すると、正しい名前が返されます。 これを実行してデータベースを正しく切り替える方法はありますか?

2
SQL Server 2008:毎日再起動するシーケンス
:私は、次の形式の文字列を使用して列を更新する必要があり、トリガーを追加する必要があり<current_date>_<per_day_incremental_id>、例えば2015-10-01_36。IDは増分である必要があり、ギャップは許容されます。 私のアプローチはかなり素朴です。現在の日付と現在のシーケンス値でテーブルを作成し、その中に単一のレコードを保持します。 create table DailySequence ( date date, sequence int ) insert into DailySequence values (getdate(), 1); CREATE TRIGGER MakeHumanReadableId ON dbo.AuditMeasures FOR INSERT AS DECLARE @ret int; DECLARE @tempDate date; DECLARE @nowDate date; SET @nowDate = getdate(); SELECT @ret = t.sequence, @tempDate = t.date from DailySequence as t; IF …

2
データベースを使用してオブジェクトのロック/ロック解除を追跡する
オブジェクトのロック/ロック解除アクションを追跡する必要があります。オブジェクト(契約、パートナーなど)に対するアクションの前に、lockイベントが発行されます。アクションが終了すると、unlockイベントが発行されます。 ロックされているがまだロック解除されていないオブジェクトを取得したい。目標は、クエリをすばやく作成し、デッドロックを回避することです。 以下は表です create table locks ( id int identity, name varchar(255), lock int ) insert into locks values('a', 1) insert into locks values('b', 1) insert into locks values('c', 1) insert into locks values('d', 1) insert into locks values('a', 0) insert into locks values('c', 0) insert into locks values('a', 1) …

4
リンクサーバーから@@ SERVERNAMEを取得する
これは基本的な質問のようですが、答えは見つかりません-リンクサーバーからサーバー名/インスタンスなどを取得できるようにする必要があります。私はいくつかのことを試しました: select <linked server>.@@SERVERNAME; select <linked server>.SERVERPROPERTY('ServerName'); ...しかし喜びはない。何か案は? これはSQL 2008 R2&2014(2008R2はリンクサーバーです) 編集:エラーは次のとおりです。 メッセージ102、レベル15、状態1、行2 '@@ SERVERNAME'付近の構文が正しくありません。

3
Windows 10でのSQL Server 2008 R2の保守
Windows 10でSQL Server 2008 R2を実行する必要がありますが、サポートされていないため、更新を取得できません。新しいバージョンのSQL Serverをインストールすることはできません。すべてのサービスパックと累積的な更新プログラムをオンラインで見つけることができます。 質問: 更新を自動的に取得する方法はありますか? そうでない場合、すべてのサービスパックを順番にインストールする必要がありますか、それとも最新のものだけをインストールできますか?

2
SQL Server Management Studioがクラッシュするのはなぜですか?
SSMSを開くと、次のメッセージが表示されます。 SSMS-SQL Server Management Studioで問題が発生したため終了します。ご不便をおかけしてしまい申し訳ございません。 私に何ができる? 再起動後も問題は解決せず、アドインをインストールしていません。 これは、Windows XPで実行されているSQL Server 2008 R2 SSMSです。 SSMSは以前このマシンでエラーなしで実行されていました。 SSMSは、SQL Serverパッケージだけからではなくインストールされました。パッケージを再インストールすることをお勧めしますか?または、SSMSを単独でインストールする方法は? すべてのユーザーに同じ問題が発生します。

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