問題タブ [tsqlt]
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.
sql - フロー制御ロジックを結合または使用して、レポートするテーブルを決定する
テーブルを変更できないサードパーティアプリを使用しています。月末にデータをダンプし、それらのデータにその月の最終日の日付でフラグを立てる追加の datetime 列「AsOfDate」を使用して、カスタム マッチング「Monthly」テーブルを作成しました。
単一のストアド プロシージャを作成し (アプリケーションは、すべてのレポートのソースとしてビューまたはストアド プロシージャを必要とするように設計されています)、現在のデータ テーブルを使用するパラメーターを使用できるようにしたいと考えています (パラメーターは NULL または = Today's日付) または月末テーブルを使用して、月末の日付でフィルター処理します。このようにして、ユーザーが現在のデータまたは特定の月末期間のデータを使用できるレポートが 1 つあります。
あなたはどちらを好みますか (そしてその理由) 申し訳ありませんが、これは完全にコード化されていません
ソリューション #1 ユニオン クエリ
解決策 #2 If ステートメントを使用してテーブルを選択する
繰り返しますが、これは完全にコード化されておらず、データベースに依存していません (ただし、SQL Server 2005 です)。
編集:別のストアドプロシージャを使用したソリューション#2のバリエーション
.net - データベースでデータを使用できない場合に SQL Server ストアド プロシージャをテストするためのツール。
データベースでデータが利用できないSQL Serverストアドプロシージャをテストするユーティリティまたはツールを知っていますか?そのツールは、ストアドプロシージャを読み取ってDBにデータを挿入する必要があります...
助言がありますか ?
ありがとう。
sql - Red Gate SQL Test からの最初の tSQLt サンプル テストがシステムで失敗するのはなぜですか?
最近、 SSMS for SQL Server 2008 R2 を実行している仮想マシン (VMWare 8) にSQL Testプラグインをインストールしました。これはtSQLtのフロント エンドです。サーバーで CLR を有効にしました。tSQLt サンプル データベースをインストールしました。実行ボタンを押しました。すべてのサンプル テストに合格することを期待しています。私は、1 つを除いてすべてがパスすることを観察します。
[AcceleratorTests] というタイトルの最初のテスト。[2 つの粒子の場合、実験の準備ができているテスト] は失敗しました: 予想: <1> でしたが、<0> でした。
関連する SQL を読みましたが、すべて合格するはずです。私が知る限り、Red Gate が提供するコードは、サンプル データベース用に tSQLt が提供するコードと同じです。マシンには、SQL テスト ランナーとスクリプトの tSQLT セットという新しいレイヤーがいくつかあります。エラーがどこにあるかを見つけようとして、私はちょっと迷っています。最初に何を見ればよいかアドバイスはありますか?
ティア
tsqlt - tSQLt を使用してテストするときにトランザクションをロールバックする方法
最近、コードに rasierror を含むプロシージャを呼び出していました。レイザーエラーは try catch ブロックにありました。また、BEGIN TRAN は、raiserrr の後の同じ try catch ブロックにありました。Catch ブロックは、トランザクションでエラーが発生した場合にトランザクションを ROLLBACK するように設計されています。これを行う方法は、@@TRANCOUNT が 0 より大きいかどうかを確認することです。トランザクションが開始され、ロールバックする必要があることがわかっています。tSQLt でテストする場合、@@TRANCOUNT は常に >0 であるため、CATCH ブロックにヒットすると ROLLBACK が実行され、tSQLt は失敗します (tSQLt がトランザクションで実行されているため)。エラーが発生し、CATCH ブロックが実行されると、tSQLt は常にテストに失敗します。レイザーエラーの正しい処理をテストする方法がありません。トランザクションをロールバックする可能性のあるテスト ケースをどのように作成しますか?
sql-server - 計算列でのtSQLtを使用した単体テスト
最近、(永続化された)計算列を含むテーブルを呼び出すプロシージャで(Red Gate SQL Testを介して)いくつかのtSQLtデータベース単体テストを作成していますが、FakeTable SPを使用すると、計算列にデータが入力されていないことがわかります(それらはnullとして評価されます)。計算された列はテストの鍵となるため、テストの列を無視することはできず、ロジックを複製したくありません。
tSQLt.AssertEqualsTable SPを使用して結果を評価しているので、両方の列の値が同じであることを確認したいと思います。
実際には、FakeTableを使用せずに、テストの最後に(部分的な)ロールバックトランザクションステートメントを使用してこれを回避しました(http://sqlity.net/en/585/how-のブログ投稿による) to-rollback-in-procedures /)またはテスト値を明示的に削除します。
このテストをコーディングするためのより良い方法があるはずだと確信しており、どんな提案も歓迎します。
sql-server - tSQLt の SQLCop テスト
SQLTest
SQL 単体テスト用の Redgate ツールは、 SQLCopからテストを追加する機能を提供するようになりましたが、Redgate ツールには、それらのテストのビルド済みのいくつかしか付属していません。
テストは単なるストアド プロシージャであるため、誰かがこれらのテストをさらに実装していると確信しています。
共有してもよろしいですか?誰?
sql - MAX intを取得するが、特定のintを除外する方法は?
特定の列から最大整数を取得したいのですが、存在する場合は常に最大になる値を除きます。データは次のようになります。
上記では、MAXスコアを10未満にしたいと思います。この場合、MAX(スコア)は10に戻るため、機能しません。結果は次のようになります。
助言がありますか?
sql - シノニム テーブルを FakeTable しようとすると tSQLt が失敗する
私は tSQLt を使用しています (Red Gate の SQL テスト バージョン 1.0.0.455 を使用)。tSQLt はデータベース A にインストールされています。データベース A のシノニムを使用して、同じ SQL サーバー インスタンスのデータベース B のテーブルで tSQLt.FakeTable を実行しようとしています。
コード:
ALTER PROCEDURE [ErrorType109NonTankHasSizeOrVolume].[テスト AliasTest] AS
BEGIN
Exec tSQLt.FakeTable 'dbo.Bygning';dbo.Bygning (ObjStatus) 値 (1) に挿入します。
EXEC tSQLt.AssertEquals 1, 1
END;
dbo.Bygning
は、データベース B のテーブルを参照するデータベース A のシノニムであり、データベースのObjStatus
列です。dbo.Bygning
エラーメッセージ:
tSQLt.FakeTable シノニム テーブルへの方法はありますか?
明確化: エラー メッセージは、テストの実行時に表示されます。
sql - インストールした tSQLt (データベース テスト フレームワーク) のバージョンは?
データベースにインストールされているtSQLtのバージョン番号を確認する方法はありますか?
tSQLt は、T-SQL ではなく、SQL サーバーのテスト フレームワークであることに注意してください。(関係のないものと重複して閉じることに投票しないでください。)
sql-server - tSQLt TRUSTWORTHY および CLR 要件
tSQLtテスト フレームワークでは、データベースに対してTRUSTWORTHY ON を設定し、サーバーに対して SQL CLR を有効にする必要があります。
なぜこれらが必要なのですか?CLR オブジェクトなしで同じ/類似の機能を実現することは可能ですか?