問題タブ [sql-server-2005]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
14 に答える
37144 参照

sql-server - Microsoft SQL 2005 での自然な (人間の英数字による) 並べ替え

DB側のページネーションを持つ大規模なデータベースがあります。これは迅速で、数百万のレコードからわずか 1 秒で 50 行のページを返します。

ユーザーは、基本的にソートする列を選択して、独自のソートを定義できます。列は動的です - 数値、日付、テキストを持つものがあります。

ほとんどの場合、テキストは期待どおりにソートされますが、愚かな方法でソートされます。それはコンピューターにとっては理にかなっていますが、ユーザーを苛立たせます。

たとえば、文字列レコード ID で並べ替えると、次のようになります。

...等々。

これに番号を考慮してもらいたいので、次のようにします。

入力を制御できず (そうでなければ先頭の 000 でフォーマットするだけです)、単一のフォーマットに頼ることもできません - いくつかは "{alpha code}-{dept code}-{rec id}" のようなものです。

C# でこれを行ういくつかの方法を知っていますが、すべてのレコードをプルダウンしてソートすることはできません。

Sqlサーバーで自然な並べ替えをすばやく適用する方法を知っている人はいますか?


私たちは使用しています:

そして、それによってページングしています。

トリガーを追加することはできますが、追加することはできません。彼らの入力はすべてパラメータ化されていますが、形式を変更することはできません.「rec2」と「rec10」を入力すると、そのように自然な順序で返されることを期待しています.


クライアントごとに異なる形式に従う有効なユーザー入力があります。

rec1、rec2、rec3、... rec100、rec101

別の可能性があります: grp1rec1、grp1rec2、... grp20rec300、grp20rec301

入力を制御できないというのは、ユーザーにこれらの標準を変更するよう強制できないという意味です。これらの標準には grp1rec1 のような値があり、それを grp01rec001 として再フォーマットすることはできません。外部システムへのリンク。

これらの形式はさまざまですが、多くの場合、文字と数字が混在しています。

これらを C# で並べ替えるのは簡単です。それを分割して{ "grp", 20, "rec", 301 }、シーケンス値を順番に比較するだけです。

ただし、何百万ものレコードがあり、データがページングされている可能性があるため、SQL サーバーで並べ替えを行う必要があります。

SQLサーバーは比較ではなく値でソートします-C#では値を分割して比較できますが、SQLでは一貫してソートする単一の値を(非常に迅速に)取得するロジックが必要です。

@moebius - あなたの答えはうまくいくかもしれませんが、これらすべてのテキスト値にソートキーを追加するのは醜い妥協のように感じます.

0 投票する
7 に答える
105712 参照

sql-server - SQL Server、名前付きインスタンスを既定のインスタンスに変換しますか?

SQL Server 2005 の名前付きインスタンスを既定のインスタンスに変換する必要があります。

再インストールせずにこれを行う方法はありますか?


問題は、6 人中 2 人の開発者が名前付きインスタンスをインストールしたことです。そのため、他の 4 人の接続文字列を変更するのは面倒です。これら 2 つをチームの標準設定に戻すための抵抗が最も少ない方法を探しています。

それぞれが、これは非常に面倒であり、開発時間が奪われるだろうと表明しています. 関係者全員の最善の利益のために、解決にはしばらく時間がかかると思いましたが、インストールされている構成アプリをくまなく調べてみましたが、何も表示されなかったので、内部の仕組みに詳しい人がここにいると思いました.

0 投票する
14 に答える
176406 参照

sql-server - varchar と nvarchar の SQL Server データ型の主なパフォーマンスの違いは何ですか?

を使用して、学校で小さな Web アプリのデータベースに取り組んでいますSQL Server 2005。vs
の問題については、いくつかの考え方があります。varcharnvarchar

  1. varchar多くの国際化されたデータを扱っていない限り使用してから使用してくださいnvarchar
  2. nvarcharすべてに使用するだけです。

ビュー 2 のメリットが見えてきました。nvarchar が 2 倍のスペースを占有することはわかっていますが、これは数百人の学生のデータしか保存しないため、必ずしも大したことではありません。私には、それについて心配せずに、すべてが nvarchar を使用できるようにするのが最も簡単なように思えます。または、私が見逃しているものがありますか?

0 投票する
4 に答える
439 参照

sql-server-2005 - ベンチマーク目的で大きなビューのクエリをシミュレートする

私たちの Windows フォーム アプリケーションは、ADO.NET と SOAP Web サービスを介して SQL Server のビューからレコードを取得し、データ グリッドに表示します。25,000 行までのケースがいくつかありましたが、これは比較的スムーズに機能しますが、潜在的な顧客は 1 つのリストにその何倍もの行を含める必要があります。

現時点でどれだけうまくスケーリングできるか、またどのように (そしてどこまで) 現実的に改善できるかを把握するために、シミュレーションを実装したいと思います。実際のデータを表示する代わりに、SQL Server に架空のランダム データを送信させます。クライアント側とトランスポート側はほとんど同じです。もちろん、ビュー (または少なくとも基になるテーブル) の動作は異なります。ユーザーは、架空の行数 (たとえば、100,000) を指定します。

とりあえず、クライアントがデータを取得して処理し、表示する準備が整うまでにかかる時間を知りたいだけです。

私が理解しようとしているのはこれです:SQL Serverにそのようなデータを送信させるにはどうすればよいですか?

私は:

  1. 実際のテーブルを埋めるために事前に実行する必要があるストアド プロシージャを作成しますか?
  2. ビューを指す関数を作成して、サーバーに「ライブ」データを生成させますか?
  3. どういうわけか既存のデータを複製および/またはランダム化しますか?

最初のオプションは、現実世界に最も近い結果が得られるように思えます。データは実際には「物理的にそこにある」ため、SELECTクエリは実際のデータに対するクエリとパフォーマンス的に非常に似ています。ただし、それ以外の場合は無意味な操作でサーバーに負担がかかります。偽のデータも同じデータベースに存在するため、バックアップされます。もちろん、ベンチマークを実行するたびにデータを削除しない限り.

2 番目と 3 番目のオプションは、実際のシミュレーションの実行にサーバーに負担をかけるため、結果が非​​現実的に遅くなる可能性があります。


さらに、ループやカーソルを使用しない限り、これらの行を作成する方法がわかりません。実際にエントリがSELECT top <n> random1(), random2(), […] FROM fooある場合は使用できますが、それ以外の場合は (明らかに) たまたまある行だけを取得します。Aまたは類似のものは、そのトリックを行うようには見えません。foo<n>fooGROUP BY newid()

0 投票する
3 に答える
7549 参照

sql-server - クラスター化インデックス列の非クラスター化インデックスはパフォーマンスを向上させますか?

SQL Server 2005 では、クエリ アナライザーから、クラスター化インデックスが既にあるテーブルのプライマリ ID 列に非クラスター化インデックスを作成するように何度も指示されました。この推奨事項に従った後、クエリ実行プランは、クエリが高速になるはずであると報告します。

同じ列 (同じ並べ替え順序) の非クラスター化インデックスがクラスター化インデックスよりも高速なのはなぜですか?

0 投票する
4 に答える
3582 参照

sql-server - 読み取り専用データベース テーブルをメモリにロードする

私のアプリケーションの 1 つに、参照データに使用される 1 GB のデータベース テーブルがあります。そのテーブルから大量の読み取りが行われていますが、書き込みはありません。ディスクからアクセスする必要がないように、データをRAMにロードできる方法があるかどうか疑問に思っていましたか?

SQL Server 2005 を使用しています

0 投票する
2 に答える
109 参照

sql-server - SQL データベースの後方変換

SQL2005データベースを元のSQL2000形式に変換するのに役立つ無料のツールを知っている人はいますか? すべてのオブジェクトをスクリプト化し、データのダンプを実行できることは知っていますが、これを手動で行うには多くの作業が必要です。

0 投票する
4 に答える
7915 参照

sql - SQL Server 2005ProfessionalEditionのSQLプロファイラー

SQL Profilerを使用して、データベースに対して実行されたクエリを追跡したり、パフォーマンスを追跡したりしたいのですが、SQLProfilerはSQLServer 2005のEnterpriseエディションでのみ使用できるようです。これは確かに当てはまりますが、何かできますかそれについて?

0 投票する
4 に答える
4786 参照

sql-server - SQL Server 2005 一時テーブル

ストアド プロシージャでは、SQL Server 2005 で #Temptable が作成されるのはいつですか? クエリ実行プランを作成するとき、またはストアド プロシージャを実行するときは?

0 投票する
2 に答える
5989 参照

sql-server - SQL Server、nvarchar(MAX)またはntext、imageまたはvarbinary?

いつどちらを選ぶべきですか?スペースと(フルテキスト)インデックス作成に関してどのような影響がありますか?

ところで、私は現在SQL Server 2005を使用しており、今後数か月以内に2008にアップグレードする予定です。

ありがとう