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

SQL Serverは、Microsoftのリレーショナルデータベース管理システムです。

22
ストアドプロシージャは、世界最大のITソフトウェアコンサルティング会社の1つで悪い習慣ですか?
私は世界のトップ3のITコンサルティング会社の1つのプロジェクトで働いており、DBAから、会社のベストプラクティスのステートストアドプロシージャは「ベストプラクティス」ではないと言われました。これは私が学んだことすべてに反している。 ストアドプロシージャにより、コードの再利用、カプセル化(ソフトウェア開発の2つの柱)、セキュリティ(個々のストアドプロシージャに対するアクセス許可の付与/取り消しが可能)、SQLインジェクション攻撃からの保護、スピードの向上(DBAによるとSQL Server 2008以降では、通常のSQLクエリでも十分な回数実行されるとコンパイルされます)。 アジャイルソフトウェア開発方法論を使用して複雑なアプリを開発しています。誰もがストアドプロシージャを使用したくない理由を考えることができますか?私の推測では、DBAはこれらのストアドプロシージャを維持することを望んでいませんでしたが、そのような設計上の決定を正当化するには、あまりにも多くのネガが存在するようです。

3
データベース接続の作成-クエリは1回ですか、それともクエリごとですか?
現時点では、Webページが最初にロードされるときにデータベース接続を作成します。次に、ページを処理し、その接続に対してクエリを実行します。これが最善の方法ですか、クエリを実行するたびにデータベース接続を作成する必要がありますか? ps 1つの接続を作成して使用する方が理にかなっていますが、これが他の問題を引き起こす可能性があるかどうかはわかりません。 MSSQLでC#(ASP.NET)を使用しています。
101 c#  database  sql-server 

3
Microsoft SQL Serverで文字列の前にNを置く必要があるのはなぜですか?
T-SQLを学んでいます。私が見た例から、varchar()セルにテキストを挿入するために、挿入する文字列だけを書くことができますが、nvarchar()セルの場合、すべての例は文字列の前に文字Nを付けます。 nvarchar()行があるテーブルで次のクエリを試しましたが、正常に機能するため、プレフィックスNは必要ありません。 insert into [TableName] values ('Hello', 'World') 私が見たすべての例で、文字列の先頭にNが付いているのはなぜですか? このプレフィックスを使用することの長所と短所は何ですか?

10
GUIDを主キーとして使用する
通常、データベースの主キーとして自動インクリメントIDを使用します。GUIDを使用する利点を学ぼうとしています。私はこの記事を読みました:https : //betterexplained.com/articles/the-quick-guide-to-guids/ これらのGUIDは、アプリケーションレベルでオブジェクトを識別するために使用されることを理解しています。データベースレベルでプライマリキーとしても保存されますか。たとえば、次のクラスがあったとします: public class Person { public GUID ID; public string Name; .. //Person Methods follow } メモリ内に新しい人物を作成し、その人物をデータベースに挿入したいとします。これをやってもいいですか: Person p1 = new Person(); p1.ID=GUID.NewGUID(); PersonRepository.Insert(p1); GUIDを主キーとする数百万の行を含むデータベースがあったとします。これは常に一意ですか?GUIDを正しく理解していますか? 以前にこの記事を読んだ:http : //enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/。GUIDと整数の間の幸せな媒体を主キーとして推奨するように見えるので、少し混乱します。 編集11/06/18 Guidsはintよりも自分の要件に適していると信じるようになりました。私は最近CQRSをより多く使用しており、GUIDはよりうまく適合しています。 一部の開発者は、GUIDをドメインモデルの文字列としてモデル化することに注意してください。例:https : //github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs-この場合:IdentityGuidは文字列としてモデル化されたGUIDです。ここに記載されていること以外にこれを行う理由はありますか?カスタム値オブジェクトまたはGUIDを分散システムのエンティティ識別子として使用しますか?。GUIDを文字列としてモデル化するのは「通常」ですか、それともモデルとデータベースでGUIDとしてモデル化する必要がありますか?

2
SQL Server内のNoSQL
この質問は、SQLとNoSQLの違いに関するものではありません。私は現時点では本当に理にかなっていない何かの理由を探しています(おそらく私の理解や感謝の欠如のため)。 MVC5、Entity Framework 6コード、SQL Server 2008を使用してゼロから新しいプロジェクトを開始しました。アプリケーションコードのビジネスレイヤー内で適用する必要があります。 私の意見では、外部キーはデータ/参照整合性の一部を形成し、実際にはビジネスロジックを模倣していません。ビジネスロジックは、参照を適用する対象/タイミング/方法/理由を制御するプロセスと検証に過ぎません。一意の制約はほぼ間違いなくビジネスプロセスであることを理解できますが、私にとってこれはロジックを補完するだけで、整合性の一部を形成します。 2番目の引数は、データにNoSQLアプローチを採用することです。SQL-Server 2008の使用、レポートの必要性、テラバイトにスケーリングされないデータ、Mongo、Ravenなどのテクノロジーに対する考慮の欠如を考慮すると、これは非常に珍しくて非正統的であることがわかりました。 以前にそのようなシナリオに出くわした人はいますか?なぜ参照データ用に設計されたSQL ServerでNoSQLアプローチを採用し、外部キーを必要としないのですか?
28 sql  sql-server  nosql 

1
JOIN vs. INNER JOINおよびFULL OUTER JOIN
私は差がある知っているINNER JOINとFULL OUTER JOIN2つの違いは、次のされているもの、私はそれを見ることができますが、JOIN ... ON...そしてINNER JOIN...ON...、まだ、まだJOIN...ON...対FULL OUTER JOIN...ON... 理由はJOIN、SOに投稿されているクエリを混乱させるだけだと思うので、ここに質問へのリンクがあります。 それでは基本的に、実際の集合演算自体の構文上の違いは何ですか? ありがとうございました、
27 sql  sql-server 

6
いつストアドプロシージャを使用する必要がありますか?
私は私が移動する方が良いだろう(もしあれば)どのような状況では、コードとEntity Frameworkののメイク使用されているすべての私のビジネス・ロジックを、持っている場合は、いくつかのストアドプロシージャにビジネスロジックを、代わりのコードでそれをすべて保ちますか? 明確にするために、代わりにではなく、現在のセットアップ(コード内のビジネスロジック)と組み合わせて意味します。ストアドプロシージャですべてのビジネスロジックを使用することの長所と短所を求めている同様の質問を多数見ましたが、ビジネスロジックの残りを保持しながら、エッジケースロジックでストアドプロシージャを控えめに使用することについてはあまり知りませんでしたコードで。 違いがある場合は、MSSQLとEntity Frameworkを使用しています。 これらは、以前にストアドプロシージャを使用したことがある状況です。 実行に数分かかっていた複雑なレポート(これはWebアプリのページでした)。LINQが提供するものよりもはるかに効率的な(実行に数秒しかかからない)SQLを作成できることがわかりました。 Webアプリケーションは、アプリケーションに関係のない他の多くの機密情報を含む別のデータベースのいくつかのテーブルを読み書きする必要がありました。すべてにアクセスするのではなく、必要なことだけを行い、限られた情報のみを返すストアドプロシージャを使用しました。Webアプリケーションは、テーブルなどにアクセスせずに、このストアドプロシージャのみにアクセスできます。 この質問をする前に私が見た他の投稿: ストアドプロシージャは、世界最大のITソフトウェアコンサルティング会社の1つで悪い習慣ですか? Webアプリケーションのストアドプロシージャにすべてのビジネスロジックを保持することの長所と短所 /programming/15142/what-are-the-pros-and-cons-to-keeping-sql-in-stored-procs-versus-code /dba/2450/what-are-the-arguments-against-or-for-putting-application-logic-in-the-database/2452#2452 ORMを使用せず、ストアドプロシージャを使用する場合

2
フィルターされた検索を実装する最適な方法
フィルター処理された検索フォームを実装する際のご意見をお聞かせください。次の場合を想像してみましょう。 多数の列を持つ1つの大きなテーブル このSQL Serverを言うことは重要かもしれません このテーブルのデータを検索するフォームを実装する必要があります。このフォームには、この検索を最適化するためのいくつかのチェックボックスがあります。 ここで私の質問は、次のどれが検索を実装するための最良の方法であるべきかということです。 内部にクエリを含むストアドプロシージャを作成します。このストアドプロシージャは、パラメータがアプリケーションによって指定されているかどうかを確認し、指定されていない場合は、ワイルドカードがクエリに挿入されます。 動的クエリを作成します。動的クエリは、アプリケーションによって指定された内容に従って構築されます。 これは、SQL Serverがパフォーマンスを最適化するためにストアドプロシージャの作成時に実行プランを作成することを知っているためですが、ストアドプロシージャ内で動的クエリを作成すると、実行プランによって得られる最適化が犠牲になりますか? あなたの意見で最善のアプローチは何でしょうか教えてください。


5
SQL Serverによるバージョン管理
新しいプロジェクトを開始し、バージョン管理システムとしてSVN(Tortoiseを使用)を使用しています。同じシステムを使用してSQL Serverデータベースも維持できるかどうか疑問に思っていました。 テーブル/関数/ビュー/プロシージャ/トリガー/などをバージョン管理したいと思います。とにかくテストデータになるため、私のデータはそうではありません。これをどのように設定するのかよくわかりません。いくつかのオプションに出くわしましたが、足りないものがあったかどうか、そしてそれを実行するために役立つガイドや何かがあるかどうかを知りたいです。 Red Gateを見たことがありますが、無料のもの(または少なくとも非常に低価格)を探しています。私はいつでも自分で何かを書くことができることを知っていますが、私はそのことに時間を費やそうとはしていません。 私が遭遇したことの1つは、ScriptDB4Svnと呼ばれるオープンソースパッケージをまとめたことです。誰もこれを以前に使用しましたか?いいですか?必要なことはできますか?セットアップは簡単ですか?

2
SQL ServerとMongoを一緒に使用できますか?
Webトラフィックが多い、ニュース向けの大きなサイトがあります。アーキテクチャは、よく見られるDB-レポ層-サービス層-Asp.Net MVCです。私たちが見てきた問題は、読み取りパフォーマンスにあります。このDDDドメインオブジェクトはすべて、理論的にはビジネスルールにとっては優れていますが、読み取りパフォーマンスの最適化に関しては困難になっています。 解決策として、まったく新しいもの(私たちにとって)を検討しています。noSQLの使用です。私たちのウェブサイトに表示されるデータにnoSQLデータベースを使用したいと思います。SQL Serverを削除することはできません(少なくともいつでも)が、実際の手順は、Mongoをすべての新しい開発のクエリデータベースとして使用することだと思われます。 私の質問は、SQL Serverをレコードのデータベースとして使用し、Mongoをクエリデータベースとして一緒に使用できるかどうかです。 そのため、エディターの1人がレコードを更新すると、データはSQL Serverに保存されます。これは、一晩で書き直すことができないレガシーコードが多すぎるために必要です。 しかし、Webサイトの閲覧者が記事または記事のリストを表示するとき、Mongo対SQL Serverのパフォーマンスを活用したいと思います。データを多少最新の状態に保つため、たとえば15分以内にSQL Serverデータを更新するには、Mongoを更新する必要があります。RDBMSには、このような操作のためのレプリケーションツールがあり、SQL ServerからMongoに同じことを行う何かがあるかどうか疑問に思っています。Lyncサーバー、おそらく?
14 sql-server  nosql  cqrs  mongo 

13
SQL開発者は、SQLクエリデザイナーを使用してSQLクエリを作成しますか?
SQL Devがフリーハンドでコードを記述したり、ビジュアルクエリデザイナを使用してクエリを生成したりするかどうかに興味がありました。ほとんどの場合、クエリデザイナーは複雑でないクエリのほとんどを作成できますか?(私は今、SQL Serverを使い始めたばかりのWinForms開発者です)
13 sql  sql-server 

1
数百万のレコードでの部分的な名前の一致
私たちは、名前を照合するためのWebベースのアプリケーションを開発しました。名前をパーツに分割することで動作し、各パーツのSoundex値はデータベースに格納されます。レーベンシュタイン距離メトリックは、与えられた名前に対するパーセンテージ音のマッチングだけでなく、スペルを適用するために使用されます。 実行時に、すべてのレコードをメモリに読み込み、すべてのSoundex値とすべての名前のすべての部分のスペルにレーベンシュタイン距離を適用します。 最大で2万の名前があったため、これは最初は問題なく機能していましたが、現在、当社のクライアントの1つに3,000万の名前があります。リクエストごとにこの巨大なリストをメモリにロードし、このタイプのマッチングを適用することは、大量のメモリと実行時間を使用する悲惨なアプローチです。 サウンドとスペリングのパーセンテージマッチングを使用して、近い将来に3000万件以上のレコードのデータベースを検索するための提案を探しています。 コア機能 エンドユーザーは、照合する名前と最小パーセンテージを入力します。名前の任意の部分が指定された名前の指定されたパーセンテージまでの任意の部分と一致するすべての名前をデータベースに表示することになっています。完全な名前を一致させる必要はありません。割合までの一致が成功した場合は、どの部分でも成功します。例えば。 Given Name: Helen Hunt Name in DB: Holly Hunter 両方の名前の両方の部分は正確には一致していませんが、ある程度までは一致します。80%と想定します。したがって、ユーザーが80%と入力した場合、DB内の名前は一致する名前として表示される必要があります。

3
頻繁に変更されるスキーマでのSQL Server変更データキャプチャの使用
構築中の新しいサブシステムでSQL Server変更データキャプチャを有効にすることを検討しています。 それは本当に必要なわけではありませんが、完全な履歴追跡可能性を求められており、CDCは最小限の労力でこの要件をうまく解決します。 私たちはアジャイル開発プロセスに従っています。つまり、この場合、新しい列の追加、他の列へのデータの移動など、データベーススキーマに頻繁に変更を加えます。 テーブルを作成し、そのテーブルに対してCDCを有効にしてから、新しい列をテーブルに追加する小さなテストを行いました。新しい列への変更は、CDCテーブルに登録されません。 CDCテーブルを新しいスキーマに更新するメカニズムはありますか。また、データベーススキーマを移行するときに、キャプチャされたデータを処理するためのベストプラクティスはありますか?

2
複数のアプリインスタンスでデータベースの移行を安全に実行するにはどうすればよいですか?
高速(1秒未満)と低速のデータベース移行(> 30秒)の両方が混在するアプリケーションがあります。現在、データベースの移行をCIの一部として実行していますが、CIツールはアプリのデータベース接続文字列をすべて(複数の環境で)認識している必要があるため、理想的ではありません。このプロセスを変更して、アプリケーションが起動時に独自のデータベース移行を実行するようにします。 ここに状況があります: このアプリケーションの複数のインスタンスがあり、約5つが本稼働しています。それらを呼び出しましょうnode1, ..., node5。各アプリは単一のSQL Serverインスタンスに接続し、ローリングデプロイを使用していません(すべてのアプリは私の知る限り同時にデプロイされています)。 問題:長期にわたる移行があるとしましょう。この場合、node1は開始してから、マイグレーションの実行を開始します。さて、node4開始し、長期実行の移行がまだ完了していないためnode4、移行の実行も開始します->データ破損の可能性はありますか?この問題をどのように防止しますか、または問題は心配するほど重要ですか? 私はこの問題を分散ロックで解決しようと考えていました(etcdそれらを使用するか、それに沿って何かを使用します)。基本的に、すべてのアプリがロックを取得しようとし、そのうちの1つだけがロックを取得して移行を実行してから、ロックを解除します。残りのアプリが起動してクリティカルセクションに入ると、すべての移行がすでに実行されているため、移行スクリプトは終了します。 しかし、私の直感は「これはやり過ぎです。もっと簡単な解決策があるはずです」と言っているので、他の誰かがもっと良いアイデアを持っているかどうかを確認するためにここに尋ねると思いました。

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