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

SQL Server 2008(メジャービルドバージョン10.00.xxxx)。また、sql-serverでタグ付けしてください。

1
計算列で使用されるスカラー関数、関数を更新する最もクリーンな方法は何ですか?
データベースのスカラー関数を更新したい。この関数は、キーテーブルのいくつかの計算列に使用されるため、更新しようとすると依存関係エラーが発生します。列を明示的に削除し、関数を更新して列を再度追加できますが、余計な手間をかけずに列の順序が変更され、他の意図しない結果が生じる可能性があります。もっときれいな方法はあるのだろうか?

2
SQL Serverのキャッシュからテーブルをクリアするにはどうすればよいですか?
キャッシュすべきではないテーブルがデータベースにいくつかあります。 SQL Serverにテーブルのページをキャッシュしないように指示する方法、またはキャッシュから単一のテーブルをフラッシュする方法 すべてのキャッシュをフラッシュすることはオプションではありません。 SQL Server 2008とSQL Server 2008 R2を使用しています。

1
他のデータベースのアカウントなしで、他のデータベースのテーブルに基づいてビューにアクセスする
database2のテーブルに基づいて、database1にビューを作成しました。SELECTdatabase1にのみアクセスできるユーザーに許可を与えました。データベース2にアカウントがないため、ユーザーはこのビューを機能させることができません。この問題を解決するにはどうすればよいですか?database2にアカウントを作成したくありません。

1
データベースプロジェクトでOPENQUERYを使用したリンクサーバーを使用する
SQL Server 2008でTFSに投入したいデータベースを実行しています。したがって、私はDBをインポートしたVisual Studio 2013データベースプロジェクトを使用しました。たくさんのエラーを修正した後、エラーが1つだけ残っています。 1つのビューではOPENQUERY、リンクサーバーへのアクセスに使用される開発者。そこで、適切なデータベースを含むDACPACをインポートAdd Database Referenceし、次の参照オプションを使用してプロジェクトに追加しました。 スクリプトの初期バージョン 以下は、元のビュー作成の短いバージョンです。 CREATE VIEW dbo.vwStatus AS SELECT StatusID, StatusName FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 これにより、次のエラーが発生します。 エラー136 SQL71501:ビュー:[dbo]。[vwStatus]には、オブジェクト[LinkedServer]への未解決の参照があります。 最初の試み それで、サーバー名変数を挿入しようとしました FROM OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 につながる エラー176 SQL46010:$(LinkedServer)付近の構文が正しくありません。 さらなる試み 私は少し手探りで次のことを試しました(引用符付き識別子を有効にした場合と有効にしない場合): FROM OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS …

2
時間データ型に分を追加するにはどうすればよいですか?
2つのレコードをテーブルに挿入するストアドプロシージャがあります。レコード間の違いは、2番目のレコードの時間列が@MinToAdd最初のレコードの後であることです。 CREATE PROCEDURE CreateEntry /*Other columns*/ @StartTime time(2), @EndTime time(2), @MinutesToAdd smallint AS BEGIN SET NOCOUNT ON; SET @MinutesToAdd = @MinutesToAdd % 1440; --Prevent overflow if needed? IF (@MinutesToAdd > 0) BEGIN INSERT INTO ClientNotification (/*Other columns*/ startTime, endTime) OUTPUT inserted.id VALUES (/*Other columns*/ @StartTime, @EndTime), (/*Other columns*/ @StartTime + …

3
ユーザーはSSMSでデフォルト以外のスキーマのテーブルを表示できません
あるVIEW DEFINITIONユーザーのスキーマレベルで適切に権限を設定する際に問題が発生しました。スキーマTestSchemaを作成し、いくつかのテーブルを追加しました。ユーザーは、現在のアクセス許可は、アクセスに設定&(テーブルを変更しているSELECT、UPDATE、DELETEを介して、など)dbo_datareaderとdbo_datawriterロール。ただし、SSMSオブジェクトエクスプローラーでテーブルを表示することはできません。 定義を表示する権限を付与しようとしました: grant view definition on SCHEMA :: [TestSchema] to [User] それはうまくいきませんでした。テーブルレベルの権限を設定してみました: grant view definition on [TestSchema].[NewTable] to [User] それもうまくいきませんでした。それから私は全面的な助成金を試してみました: grant view definition to [User] そして、それはうまくいきました。これTestSchemaで、だけでなく、アクセスしてはならない他のスキーマも表示できるようになりました。 ここでの目標は、ユーザーが特定のスキーマ内のすべてのテーブルを表示できるようにすることです。どうすればそれを達成できますか?デフォルトでこれを実行できるようにする必要がある場合、なぜそれができないのかを見つけるためにどのようなアクセス許可を確認する必要がありますか?

1
プロファイルデッドロックレポートで「* password ------------」はどういう意味ですか?
SQL Server 2008 R2では、入力バッファーに "* password ------------"が含まれるいくつかのデッドロックレポートが表示されました。それは攻撃のように見えますが、その場合、理由や攻撃の種類はわかりません。 (ログはエキスパートDBAがどのように多くの経験を持っているかによって生成され、私ではなく、私にそれを伝えました) 誰か知っていますか?ありがとう! 例: <?xml version="1.0"?> <blocked-process> <process id="process879948" taskpriority="0" logused="0" waitresource="KEY: 5:72057602473263104 (1d69201d0ba6)" waittime="5185" ownerId="88389135" transactionname="SELECT" lasttranstarted="2012-09-25T18:11:02.507" XDES="0x1f7d2a590" lockMode="S" schedulerid="2" kpid="4552" status="suspended" spid="86" sbid="2" ecid="0" priority="0" trancount="0" lastbatchstarted="2012-09-25T18:11:02.507" lastbatchcompleted="2012-09-25T18:11:02.507" lastattention="2012-09-25T18:07:35.740" clientapp=".Net SqlClient Data Provider" hostname="IP-xxxxxxxx" hostpid="4868" loginname="sa" isolationlevel="read committed (2)" xactid="88389135" currentdb="1" lockTimeout="4294967295" …

6
階層のあるテーブル:外部キーによる循環を防ぐための制約を作成します
次のように、テーブル自体に外部キー制約があるテーブルがあるとします。 CREATE TABLE Foo (FooId BIGINT PRIMARY KEY, ParentFooId BIGINT, FOREIGN KEY([ParentFooId]) REFERENCES Foo ([FooId]) ) INSERT INTO Foo (FooId, ParentFooId) VALUES (1, NULL), (2, 1), (3, 2) UPDATE Foo SET ParentFooId = 3 WHERE FooId = 1 このテーブルには次のレコードがあります。 FooId ParentFooId ----- ----------- 1 3 2 1 3 2 この種の設計が意味をなす場合(例:典型的な「従業員と上司と従業員」の関係)があり、いずれの場合も、スキーマにこれがある状況にあります。 …

1
暗号化されたデータベースを別のサーバーに復元する
私はSQLServer 2008で動作する製品を使用しています。当然のことながら、それを提供する会社はSQLServerサポートを提供していません。製品をインストールしたときに、データベースを暗号化するためのパスワードを指定しました。別のサーバーでテストするために、製品の別のコピーを実行したいのですが。データベースを別のサーバーに復元し、その別のサーバーに製品をインストールしました。インストール時に同じパスワードを入力し、メインサーバーからバックアップを復元しました。ただし、エラーメッセージが表示されます。 System.Data.SqlClient.SqlException: An error occurred during decryption. 製品から。SQLServer Management Studioを使用してテーブルにアクセスできます。 私はこれを試しました: 最初のサーバー: CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff' BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat' WITH PRIVATE KEY ( ENCRYPTION BY PASSWORD = 'mypassword', FILE = 'd:\backup\cert1_privatekey.dat' ) 2番目のサーバー: CREATE MASTER KEY ENCRYPTION BY PASSWORD …

4
SQL Serverが別のデータベースからテーブルの名前を変更する
SQL Serverで別のデータベースのテーブルの名前を変更する方法はありますか?現在のデータベースにいて、TEMPテーブル内の別のデータベースにデータを移行してから、その別のデータベース内のTEMPテーブルの名前を変更する場合。別のサーバーではデータベース名が変更される可能性があるため、「USE [データベース]」を使用したくありません。 事前に助けてくれてありがとう!

4
LIKE演算子で複数の値を選択する
以下に示すSQLクエリがありますlike。演算子を使用して複数の値を選択します。 私のクエリは正しいですか? SELECT top 1 employee_id, employee_ident, utc_dt, rx_dt FROM employee INNER JOIN employee_mdata_history ON employee.ident=employee_mdata_history.employee_ident WHERE employee_id like 'emp1%' , 'emp3%' ORDER BY rx_dt desc そうでない場合、誰かが私を修正できますか? テーブルには、'emp1'およびで始まる大量のデータがあり'emp3'ます。結果を上位3「emp1」と上位2「emp3」でフィルタリングできますrx_dtか?

1
IF NOT NULLの場合はUPDATE、それ以外の場合はフィールドの値を保持
私はどういうわけかそれを動作させるように近いと思いますが、何らかの理由でまだエラーが発生します。 次のUPDATEクエリがあります。 UPDATE DeviceAttribute SET Details = CASE Name WHEN 'Accessories' THEN @Accessories WHEN 'Description' THEN @Description WHEN 'Specification' THEN @Specification ELSE Details END WHERE DeviceID = 10 パラメータは、さまざまなユーザーによって入力されます。私が今直面している問題は、単一のフィールドを更新したい場合でも、他のパラメーターを古いデータで埋めなければならないということです。したがって、私はオプションIF @parameter IS NULL THENを設定し、すでにDBに格納されている値を保持したいと考えています。私はいくつかの解決策を見つけようとしましたが、次のクエリのようなものが解決策のようですが、それを機能させることができません: UPDATE DeviceAttribute SET Details = CASE Name WHEN 'Accessories' IS NOT NULL THEN @Accessories WHEN 'Description' IS …

1
夏時間
私の環境では、ネイティブバックアップで実行されているサーバーとOla Hallengren計画があります。当社のサーバーは、2008、2012、2014の組み合わせです。すべての完全バックアップは午前12時に行われ、ログバックアップは15分ごとに行われます。 これまでに夏時間を考慮したことがないので、どのような調整を行うべきか教えてください。 午前12時のフルバックアップは影響を受け、ログバックアップはどうなりますか?

1
インジェクション攻撃から保護するためにQUOTENAMEを引き続き使用する必要がありますか?
今日、古いストアドプロシージャを見ていquotenameて、入力パラメーターで使用されていることに気付きました。それが何をしているのかを正確に理解するために少し掘り下げた後、私はこのサイトを見つけました。私はそれが何をするか、そしてそれをどのように使うかを理解しました、しかしサイトはそれがSQLインジェクション攻撃からの緩和として使われると言います。asp.netを使用してデータベースを直接クエリするアプリを開発していたときは、ADO.Netパラメータを使用してユーザー入力をリテラル値として渡し、ストアドプロシージャでそれを保護することについて心配することはありませんでした。 現在、自分が記述し​​ていないアプリケーションで使用されるストアドプロシージャを記述しているので、プロシージャレベルでインジェクション攻撃から保護する必要quotenameがあります。これは、これを行うための最良の方法であるか、より新しい機能/優れた方法があります。方法? この思考パターンに私を導いたコード(@parm1ユーザー入力パラメーターです): 'SELECT project [Project], project_desc [Description], customer [Customer], cpnyid [Company] FROM PJPROJ (nolock) where project like ' + quotename(@parm1,'''') + '

2
Oracle USING INDEX句に相当するSQL Server
OracleのUSING INDEX句に相当するSQL Server 2008はありますか?具体的には、構成: CREATE TABLE c(c1 INT, c2 INT); CREATE INDEX ci ON c (c1, c2); ALTER TABLE c ADD CONSTRAINT cpk PRIMARY KEY (c1) USING INDEX ci; Sql Server Documentation on Unique Indexsには、次のように記載されています(強調を追加)。 一意のインデックスは、次の方法で実装されます。 PRIMARY KEYまたはUNIQUE制約 PRIMARY KEY制約を作成すると、テーブルにクラスター化インデックスがまだ存在せず、一意の非クラスター化インデックスを指定しない場合、列に一意のクラスター化インデックスが自動的に作成されます。主キー列はNULL値を許可できません。 これは、主キーに使用するインデックスを指定する方法があることを意味しているようです。

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