問題タブ [sql]

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 投票する
4 に答える
3653 参照

sql - リレーショナル データベース設計の優れたリソース

リレーショナル データベースの設計、パフォーマンスのチューニングなどのベスト プラクティスに関する本/サイト/チュートリアルを探しています。この種のリソースを見つけるのは少し難しいことがわかりました。「これが正規化で、ここが ER ダイアグラムです」という言葉はたくさんありますが、実際の例はあまりありません。誰にもアイデアはありますか?

0 投票する
16 に答える
6706 参照

sql - SQLストアドプロシージャの単体テストで成功した人はいますか?

C#/C++ コード用に作成した単体テストが本当に効果があることがわかりました。しかし、ストアド プロシージャにはまだ数千行のビジネス ロジックがあり、実際にテストされるのは、製品が多数のユーザーに公開されたときだけです。

さらに悪いことに、SP 間で一時テーブルを渡すときにパフォーマンスが低下するため、これらのストアド プロシージャの一部が非常に長くなることがあります。これにより、コードを単純化するためのリファクタリングが妨げられました。

いくつかの重要なストアド プロシージャを中心に単体テストを作成する試みを何度か行いました (主にパフォーマンスのテスト) が、これらのテスト用にテスト データを設定するのは非常に困難であることがわかりました。たとえば、テスト データベースをコピーすることになります。これに加えて、テストは変更に非常に敏感になり、ストアド プロシージャへの最小の変更でさえも敏感になります。またはテーブルは、テストに大量の変更を必要とします。そのため、これらのデータベース テストが断続的に失敗したために多くのビルドが機能しなくなった後、ビルド プロセスから除外する必要がありました。

私の質問の主な部分は、ストアド プロシージャの単体テストを正常に作成したことがありますか?

私の質問の 2 番目の部分は、単体テストが linq で簡単になるかどうかです。

テスト データのテーブルを設定するのではなく、単純にテスト オブジェクトのコレクションを作成し、「linq to objects」の状況で linq コードをテストできるのではないかと考えていました。(私はlinqにまったく慣れていないので、これがまったく機能するかどうかわかりません)

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

sql - Emacs sql-mysql でポート番号を指定する

私は Emacs の sql インタラクティブ モードを使用して MySQL db サーバーと対話し、それを楽しんでいます。開発者がデフォルト以外の新しいポート番号で別のデータベースをセットアップしましたが、sql-mysql を使用してアクセスする方法がわかりません。

データベースに接続しようとしているときにポート番号を指定するにはどうすればよいですか?

Emacs がポート番号の入力を求めるプロンプトを出して、指定しない場合はデフォルトをそのまま使用できるとさらによいでしょう。その可能性はありますか?

0 投票する
11 に答える
4346 参照

sql - 監査システムの構築; SQL Server バックエンド上の MS Access フロントエンド

したがって、基本的に私は会社用のアプリを構築しています.MS Accessを使用して構築する必要があり、SQL Serverで構築する必要があります.

私はほとんどの計画を作成しましたが、監査システムを処理する方法を理解するのに苦労しています.

内部でのみ使用されており、建物の外からデータベースにアクセスすることさえできないため、ユーザーが Active 経由で内部ネットワークにログインした後にのみプログラムが使用されるため、ログイン システムは使用していません。ディレクトリ。これを認識して、システムを使用して Active Directory ユーザーの名前を自動的に検出し、DB テーブルの 1 つのアクセス許可を使用して、ユーザーができることとできないことを決定します。

したがって、実際の監査テーブルには 3 つの列があります (この設計は変更される可能性がありますが、この質問では問題になりません)。誰が(Active Directoryユーザー)、いつ(追加・削除・編集時)、何を(何を変更したか)

私の質問は、これをどのように処理する必要があるかです。理想的には、トリガーを使用して、監査がログに記録されずにデータベースが更新されないようにする必要があることを知っていますが、その方法で Active Directory ユーザーを取得する方法がわかりません。別の方法として、Access ソースに直接コーディングして、何かが変更されるたびに INSERT ステートメントを実行することもできます。Access に何かが起こった場合、またはデータベースが他の何かに触れられた場合、監査がログに記録されないため、明らかに欠陥があります。

私を助けるかもしれないアドバイス、例、または記事は大歓迎です!

0 投票する
6 に答える
10155 参照

sql - データベースの大文字と小文字を区別しないインデックス?

文字列に対して検索するクエリがあります。

さて、これは問題なく動作しますが、うまくスケーリングできず、最適化する必要があります。生成されたビューの作成などのオプションを見つけましたが、インデックスを使用したより簡単なソリューションを望んでいました。

DB2 を使用しており、実際には index で式を使用したいのですが、このオプションは z/OS でしか使用できないようですが、Linux を実行しています。とにかく式インデックスを試しました:

しかしもちろん、それは UPPER(名前) で詰まります。

既存のクエリを再構築して新しく生成されたビューを使用したり、既存の列を変更したり、その他のそのような侵入的な変更を行う必要がないように、この方法でインデックスまたは同様のものを作成できる別の方法はありますか?

編集:私は他のデータベースの解決策を聞くことにオープンです...それはDB2に引き継がれるかもしれません...

0 投票する
9 に答える
52700 参照

sql - SQL Server に Update ストアド プロシージャを挿入する

レコードが存在する場合は更新を行い、そうでない場合は挿入を行うストアド プロシージャを作成しました。次のようになります。

このように書くことの背後にある私のロジックは、更新が where 句を使用して暗黙的な選択を実行し、それが 0 を返す場合、挿入が行われるということです。

この方法に代わる方法は、選択を行い、返された行数に基づいて更新または挿入を行うことです。更新を行う場合、2 つの選択 (最初の明示的な選択呼び出しと、更新の場所での 2 番目の暗黙的な呼び出し) が発生するため、これは非効率的であると考えました。プロシージャが挿入を行う場合、効率に違いはありません。

ここで私の論理は正しいですか?これは、挿入と更新をストアド プロシージャに結合する方法ですか?

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

sql - MSFT からデータベース公開ウィザードを使用して公開した後の DB に関する問題

私はかなりの数の DotNetNuke サイトで作業しており、ときどき (共通要素はまだわかりません)、Microsoft の Database Publishing Wizard を使用して、Dev サーバーで作成したサイトのスクリプトを作成します。ホスト (通常は GoDaddy.com) でスクリプトを実行し、サイト ファイルをアップロードすると、エラーが発生します...ファイル関連ではないことは 99.9% 確信しているので、DB のどこから始めればよいかわかりません。残念ながら、DotNetNuke では YSOD は得られませんが、一般的なエラーであり、発生した実際の例外を見つける実際の方法はありません。

データベース公開ウィザードを使用して同様の展開の問題が発生したことがある人がいるかどうか、もしそうなら、どのように解決したか知りたいです。私は RedGate ツールセットを所有していますが、GoDaddy などの一部のホストでは、サーバーへの直接接続が許可されていません...

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

c# - パラメータバインディング:内部で何が起こりますか?

さまざまな言語の.NET、Java、およびその他の高レベルのデータベースAPIは、プレーンテキストコマンドをデータベースサーバーに送信するのではなく、プリペアドステートメントおよびパラメータバインディングと呼ばれる手法を提供することがよくあります。私が知りたいのは、次のようなステートメントを実行するとどうなるかです。

これがベストプラクティスであることを私は知っています。SQLインジェクション攻撃はこの方法で最小限に抑えられます。しかし、これらのステートメントを実行すると、内部で正確に何が起こりますか?最終結果はまだSQLセーフ文字列ですか?そうでない場合、最終結果はどうなりますか?そして、これはSQLインジェクション攻撃を防ぐのに十分ですか?

0 投票する
47 に答える
76263 参照

c# - コードとストアド プロシージャに SQL を保持することの長所と短所は何ですか

SQL を C# ソース コードまたはストアド プロシージャに保持することの利点と欠点は何ですか? これについては、現在取り組んでいるオープン ソース プロジェクト (C# ASP.NET フォーラム) の友人と話し合っています。現時点では、データベース アクセスのほとんどは、C# で SQL インラインを構築し、SQL Server DB を呼び出すことによって行われます。だから私は、この特定のプロジェクトに最適なものを確立しようとしています.

これまでのところ、私は持っています:

コード内の利点:

  • メンテナンスが容易 - クエリを更新するために SQL スクリプトを実行する必要がない
  • 別の DB への移植が容易 - 移植する proc が不要

ストアド プロシージャの利点:

  • パフォーマンス
  • 安全
0 投票する
7 に答える
332 参照

sql - セーフティ ネットを備えた SQL

私の会社には、有能で賢い運用スタッフがいて、一生懸命働いています。私は彼らに、急いでいるときに犯しやすい一般的で簡単に検出できる SQL の誤りを避けるのに役立つ SQL 実行ツールを提供したいと考えています。誰でもそのようなツールを提案できますか? 詳細は次のとおりです。

運用チームの任務の一部は、非常に複雑なアドホック SQL クエリを作成することです。驚くことではありませんが、オペレーターは多忙なため、作成するクエリに間違いを犯すことがあります。

幸いなことに、彼らのクエリはすべて、データを変更する SQL ではなく SELECT であり、とにかくデータベースのコピーで実行されています。それでも、実行する SQL のエラーを防止したいと考えています。たとえば、エラーが原因で実行時間の長いクエリが発生し、使用している重複システムの速度が低下し、原因となるクエリを見つけて強制終了するまで、他のユーザーに迷惑をかけることがあります。さらに悪いことに、時折、間違いが正しいと思われる答えにつながることがありますが、それはかなり後になるまでわかりません。

私たちの開発者も複雑なコードを書くときに間違いを犯しますが、入力時にエラーをキャッチするEclipse とさまざまなプラグイン ( FindBugsなど) を使用しています。オペレーターに似たようなものを提供したいと思います-理想的にはそれが見えるでしょう

実行する前に、「ねえ、それがデカルト積だと気づきましたか?本当にそれを実行しますか?」と表示されます。非常にスマートである必要はありません。明らかに欠落している結合条件や同様の明らかなエラーを見つけることは問題ありません。

TOADがこれを行う必要があるように見えますが、そのような機能について何も見つけられないようです。この種のセミインテリジェントなエラー修正を提供できる TOAD のような他のツールはありますか?

更新: MySQL を使用していることを忘れていました。