問題タブ [sqlclient]
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.
c# - SQL Serverを使用せずにC#アプリケーションを作成する
SQLの使用を開始したばかりですが、必要なのは、ユーザー名とパスワードを保存するC#アプリケーション用のデータベースを作成することです。パスワードのリマインダーのように考えてください。
とにかく、私がする必要があると思うのは、アプリケーションがデータの保存にのみ使用するSQLデータベースを作成する必要があるということです。マシンにSQLServerをインストールする必要はありません。
インターネットで検索しましたが、結果はありません。すべてSQL Serverを使用する必要があります。そのための手順、またはリソースを教えていただけますか。ありがとうございました。
c# - DB.nullであるパラメーターを渡し、それに等しい値をデータベースに設定することは可能ですか?
データベース(1レコード)からデータを取得し、各値をテキストボックスまたはドロップダウンリストに配置しています。これらの値の一部はDB.nullです。もしそうなら、私はそれらのそれぞれを ""(空白)に変換します。ただし、ユーザーがテキストボックス/ドロップダウンリストを変更すると、新しい結果を「保存」できます。私の問題はこれです:
ユーザーが空白のままにした場合、値がDB.nullであることを維持できるようにしたいと思います。これを行う方法はありますか?
また、テキストボックスに値があり、ユーザーがその値を削除することを決定した場合、それをDB.Nullに変換することもできますか?これが私があなたたちにいくつかのアイデアを与えるためにやろうとしたことです:
vb.net - マルチスレッドSQLクライアント書き込みクエリ
私はMSSQLデータベース(サーバーではない)を持っています。私のプログラムは2 TBの外付けドライブからファイル構造を読み取り、リストをデータベースに記録します。私は毎回約80kのレコードを書いていますが、それにはかなりの時間がかかります。
私は現在、レコードをそれぞれ2つのバックグラウンドワーカースレッド40kに分割してレコードを書き込んでいます。私のPCはクアッドコアPhenomIIです。
これを達成するための最良の方法は何ですか?また、私のものは7200rpmのhddであり、レイドではないため、スレッドの数を増やすことでメリットがあります。HDDが制限になる可能性があるということですか?
ありがとうございました。
編集:すべてのレコードを書き込む時間は約15〜18分です。ストアドプロシージャを使用していません。自動生成されたテーブルアダプタからのみ挿入コマンドを使用しています。スレッドごとに挿入ステートメントを40k回ループしています。いいえ、インデックスファイルに基づいて更新するのではなく、単なる挿入ステートメントです。
c# - System.InvalidCastException: パラメータ値を XElement から文字列に変換できませんでした
注:検索でこの正確な質問を見つけることができませんでした。ここでスタックオーバーフローで似たような質問を見つけたので、解決策にたどり着きました。問題を抱えている次の人がより簡単に解決策を見つけられるように、質問と解決策を投稿しています。それがまだ可能であれば、私はCommunityWikiに質問したでしょう-私はこれからの担当者を探していません.
Xml
ADO.NET を使用して、次の型のパラメーターを受け入れる SQL Server 2005 ストアド プロシージャを呼び出そうとしています。
XML を LINQ to XML XElement オブジェクトとして渡します
後で
ExecuteReader
これは、次の例外を伴う行で失敗します。
System.InvalidCastException: パラメータ値を XElement から文字列に変換できませんでした。---> System.InvalidCastException: オブジェクトは IConvertible を実装する必要があります
XElement
をストアド プロシージャに渡す正しい方法は何ですか?
c# - SQL 認証接続エラー、PW の疑わしい文字
web.config:
データベースユーザーを削除して再作成することにより、INITIALDBでユーザー名にdb_ownerロールがあることを確認しました。SSMS (上記の UID と PWD を使用) 経由でサーバーに接続し、データベースを拡張することで、ユーザー名パスワードが機能することを確認しました。
何か案は?私は途方に暮れており、割り当てられたパスワードを簡単に変更することはできません...これらの文字をエスケープする必要はないと思いますが、明らかに問題があります。
アップデート:
エラーはパスワード文字とは関係ありませんでした。「データベースを開けません...ログインによって要求されました。ログインに失敗しました...」しかし、接続文字列から「初期カタログ」または「データベース」セクションを削除すると、接続は完全に機能しました。データベースには、データベースの名前とは異なる .MDF ファイル名が含まれていることが判明しました (例: my_db_name および db_name.mdf)。データベースまたは初期カタログ プロパティを指定した接続文字列は、このため接続できませんでした。デタッチし、MDF ファイル名を一貫性のあるものに変更し、データベースを再アタッチすると、実際に問題が解決されました。奇妙ですよね?
c# - リソースを解放する SqlClient が遅い (ただし、毎回ではない)
私は非常に長い間この問題を抱えていましたが、まもなくリリースされ、修正する必要があります。
アプリケーションがあり、そのアプリケーションで別のアプリケーションを呼び出すことができます (同じアプリケーションでも、パラメーターが異なる場合があります)。
私たちが行った選択は、被呼者が起動するまで発信者を無効にすることです。
呼び出しを閉じると、リソースを解放する時間が約 1500 ミリ秒続く場合がありますが、毎回ではありません。
DotTrace を使用して何が起こるかを確認しました。スタックは次のとおりです。
ご覧のとおり、ファイナライズ メソッドは 1500 ミリ秒続きますが、その理由はわかりません !!
一部のプログラムでは、数ミリ秒しかかかりません。
だから、誰かがアイデアを持っているなら、....
Thx、そしてメリークリスマス!
python - SqlClient 接続タイムアウト
アクセスできるMSSQLサーバーとやり取りするためのpythonを書いています。私が現在抱えている問題は、トランザクション ステートメントの 1 つが、デフォルトで設定されているタイムアウト期間 (30 秒) を過ぎていないことです。
これが問題にならないように、接続文字列の Command Timeout の値を 0 に変更しようとしましたが、Command Timeout キーワードはサポートされていないと言われています。
ここに私の接続文字列があります:
この接続文字列を使用したときに表示されるコンソール メッセージは次のとおりです。
この問題を解決しようとしているときに現在読んでいたサポート スレッドに応じて、スペースあり、スペースなし、および大文字あり/なしのコマンド タイムアウトを試しました。
接続文字列のコマンド タイムアウトを変更しても機能していないように見える場合に、タイムアウト値を 30 秒より長く設定する方法を知っている人はいますか?
.net - 小数と文字列を SqlParameter として渡す適切な方法
一部のプロジェクトで、SQL Server 用の再利用可能なデータ アクセス レイヤーを作成しています。decimal
.NETをパラメーターとしてクエリに渡す適切な方法を見つけるのに問題があります。最も明白な方法:
ほとんどうまくいきます。値は DB に適切に格納されますが、SqlClient は実際の値から正確な型を推測するため、アプリケーションが 12345.678 を渡すと、@P0 を として宣言しNUMERIC(8,3)
ます。まったく同じクエリが他の値で使用される場合、その値の精度と位取りが宣言されます。私にはまだ知られていない理由で、SQL Server からこれらのクエリは等しくなく、それぞれが別々のエントリを取得しsys.dm_exec_cached_plans
ます。まったく同じ問題がありますstring
-長さごとに異なるクエリプランがあります。
私たちのアプリケーションの中には、1 分あたりかなりの数のレコードを書き込み、それぞれに 5 ~ 10 個のdecimal
値があり、その範囲は大きく異なります (一部のセンサー データ、一部の通貨値)。ほぼそれぞれINSERT
が独自のクエリ プランを取得し、1 日後には同じクエリ プランの 10 万を超えるバージョンがキャッシュされ、数 GB をはるかに超える RAM が消費されます。
対処する私の考えは、すべての可能なタイプをいくつかの任意に選択されたタイプに結合することです。の場合decimal
、精度が 20 より小さい場合は 20 に設定します。精度が 20 より大きい場合は、実際の精度よりも 4 で割り切れる最小値 (例: 24、28、32、36) として設定します。スケール (最小 2、次に 2 ずつステップ) と文字列 (最小 128、次に 2 の累乗) についても同様です。この方法で問題を制御できるようです。クエリごとに 100k ではなく約 100 種類のプランがあり、SQL Server は無駄なプランではなくバッファ プールにメモリを使用します。
このアプローチがうまくいかない可能性はありますか?SqlClient と でロードされたクエリを使用する場合、クエリ プランのキャッシュを制御下に置くためのより良い方法はありますdecimals
か?
私ができないことのリスト:
- ストアド プロシージャを使用します。この DAL の目的は、多くの DBMS (現時点では SQL Server、MS Access、Firebird、Oracle) の抽象レイヤーを作成することであるためです。
- 仲間のチームメイトに、どうにかして各変数で実際の型を渡すように強制します-それは残酷だからです。
- この DAL を破棄し、単純な古い DbProviderFactory を使用して、1990 年のようにパラメーターを作成します。これは、この DAL が SQL 方言のクエリ作成、DB 構造の作成なども処理するためです。
- この DAL を破棄し、NHibernate のような「適切な」DAO を使用してください。
- この質問を dba.stackexchange.com に送信してください。これは、SQL Server 自体の問題ではなく、SqlClient とその使用方法の問題であるためです。
c# - System.Data.IDbCommand と非同期実行?
System.Data.SqlClient.SqlCommand にはメソッドがあります
と
非同期実行用。
System.Data.IDbCommand のみ
これは同期操作専用です。
非同期操作用のインターフェイスはありますか?
さらに、なぜ BeginExecuteScalar がないのですか?
c# - '<'の近くの構文が正しくありません。ラベル「xmlns」はすでに宣言されています。ラベル名は、クエリバッチまたはストアドプロシージャ内で一意である必要があります
xml形式の文字列をデータベースから取得し、次のクエリでxmlを更新しようとしています。
しかし、それは私にエラーメッセージを与えます:
Incorrect syntax near '<'.
The label 'xmlns' has already been declared. Label names must be unique within a query batch or stored procedure.
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
引用符と関係があるのではないかと思いますが、よくわかりません。一重引用符、混合など、さまざまなオプションを試しました。
たとえば、私がそうする場合:
これにより、メッセージ内の二重引用符が一重引用符に恒久的に更新されますか?私はこれをしたくありません。