SQL Server

全2973件中441~460件表示
  • TRY CATCHでシステムエラーを検知できない

    TRY CATCHをネストさせた状態で、 テーブルがドロップされていることを検知するにはどうすればよいでしょうか? BEGIN TRY   ★   BEGIN TRY     ▲   END TRY   BEGIN CATCH   END CATCH CATCH END CATCH としているときに、 ★の位置だとテーブルのドロップはCATCH できるのですが ▲の位置だとテーブルのドロップはCATCH できないようですが、 テーブルがドロップされていることを検知するにはどうすればよいでしょうか?

  • コマンド内容

    EXEC sp_MSforeachdb @command1= "use ? DBCC SHOWCONTIG WITH FAST,TABLERESULTS" 上記のsqlが毎月実行されています。 インデックスの断片化を解消するコマンドだと 聞いたことがあるのですが、それぞれの意味が良く分かりません。 何か情報があるかたお願いします。

  • SQL2008 クエリ文について

    いつも皆様に助けていただいてます。 過去に色々聞いているものの、なかなか応用が利かず・・・今回もご支援下さい。 SQL2008に、1つのDBを作っていて、その中にテーブルAとテーブルBがあります。 テーブルAには、1つの会員Noにつき3つのSEQ1~3の行があって、それぞれにポイント数が入ってます。 テーブルA 会員No  SEQ   Point 1001     1     20 1001     2     30 1001     3     50 1002     1     15 1002     2     10 1002     3      0  テーブルBには、1つの会員につき最大10個のSEQが付きますが、今は殆どカラッポです。 テーブルB 会員No  SEQ  Rank 1001    1    5 1002    1    5 やりたいことは、テーブルAのSEQ1のポイント数が99以外なら、テーブルBに テーブルAの「会員NO」、SEQ「7」、Rank「1」 の行を挿入したいです。 クエリ実行後のテーブルB 会員No  SEQ  Rank 1001    1    5 1001    7    1 1002    1    5 1002    7    1 テーブルAのSEQ1のPointが99以外なら、テーブルBに「会員No」とSEQ「7」 とRank「1」を挿入、という概要です。 クエリで可能でしょうか? 先ずは自力である程度やってみるのが筋なんでしょうが、時間が無いので聞いてしまいます。 何卒よろしくお願いします。

  • WHERE句にて「30日前から今日まで」の設定方法

    WHERE句にて「30日前から今日まで」の設定方法 今まで、下記の通り記述していました。 WHERE M_DATE >= '2012-03-21 00:00:00.000' AND M_DATE <= '2012-04-20 23:59:59.000' 日付部分を毎回変更するのが面倒なので、エクセルのTODAY関数のようなものがないかと探したところ、GETDATE関数を見つけ、下記の通り変更してみました。 WHERE M_DATE >= dateadd(d,-30, getdate()) AND M_DATE <= getdate() しかし、時間部分が現在の時間になってしまうのですね。「今日まで」部分は、現在時刻で問題ないのですが、「30日前から」の部分は、0時0分0秒としたいのです。 どうしたらいいでしょうか? よろしくお願いします。

    • rko910
    • 回答数2
  • WHERE句にて「30日前から今日まで」の設定方法

    今まで、下記の通り記述していました。 WHERE M_DATE >= '2012-03-21 00:00:00.000' AND M_DATE <= '2012-04-20 23:59:59.000' 日付部分を毎回変更するのが面倒なので、エクセルのTODAY関数のようなものがないかと探したところ、GETDATE関数を見つけ、下記の通り変更してみました。 WHERE M_DATE >= dateadd(d,-30, getdate()) AND M_DATE <= getdate() しかし、時間部分が現在の時間になってしまうのですね。「今日まで」部分は、現在時刻で問題ないのですが、「30日前から」の部分は、0時0分0秒としたいのです。 どうしたらいいでしょうか? よろしくお願いします。

    • rko910
    • 回答数1
  • ファイルの存在チェック

    xp_fileexistsを使わずにファイルの存在チェックはできないでしょうか?

  • インサート処理のスピード

    n件のデータを (1)SELECT INSERTで処理するのと、 (2)SELECT文をカーソルループにして1件ずつINSERTするのでは 処理時間は結構違うのでしょうか? 手元に実行環境がないためご存知の方がいらっしゃったらご教授下さい。 (SQLSERVERかORACLEかなどは問いませんので)

  • SQLServerWorkgroupのCAL確認

    SQLServer2005 Workgroup Editionの設定されたサーバがあるのですが、 CAL数を確認する方法はあるのでしょうか。 また、将来的にCALの追加をする場合に 設定する場所も見当たらないのですが、 ご存知の方はいますでしょうか。 また、SQLServer2008 Workgroup Editionの場合は どうなのかも知りたいです。

    • COOPIE
    • 回答数1
  • SQL serverってどこで買うんですか

    弱小企業でAccessを利用していましたが、Accessは限界に近づいてきました。 そこで、SQL Serverを購入したいと思うのですが、ネットで見てもどこで購入すればいいかわかりません。 大きい家電屋も近くにないので、どうやれば購入できるのか知りたいと思います。使いたいのはsql server 2008 R2 standardで3人のユーザーが使う事を想定しています。 VBでアプリをつくり、アプリを3台のPCに入れて、そこからsql serverに接続したいと思っています。 どこで購入できるのか御教えて下さい。よろしくおねがいします。

  • オブジェクト名 '<table>' が無効です

    システムの改修をしています。 新規テーブル、SERVER_CHECK を作成しました。 このテーブルにアクセスすると、下記エラーが発生します。 ===== Microsoft OLE DB Provider for ODBC Drivers エラー '80040e37' [Microsoft][ODBC SQL Server Driver][SQL Server]オブジェクト名 'SERVER_CHECK' が無効です。 ===== 既存のテーブルにはちゃんとアクセスできます。 'SERVER_CHECK' の名前も管理ツールからコピー&ペーストしたので、間違っていません。 SQL Server Management Studio からは結果を出力できます。 プログラムからアクセスするとエラーになります。 ===== Set conServer = ConnectDB() SQL = "SELECT * FROM SERVER_CHECK" 'SQL = "SELECT * FROM PLAN_DB" こちらは正しく出力を得られます。 Set dbServer = conServer.Execute(SQL) ===== どこかの設定が間違っていると思うのですが、見当がつきません。 どなたかご教示よろしくお願いします。

    • ab-bz
    • 回答数1
  • SQLSERVERでも表領域は作れますか?

    ORACLEでいうCREATE TABLE SPACE のようなものはないでしょうか? 1.CREATE TABLE SPACEを知りたいです 2.CREATE TABLE文で、デタレコードにはどの表領域を使って、インデックスにはどの表領域を使うか?を指定する構文を知りたいです。

  • EXISTSを使ったDELETE文

    「SELECT文の件数」と、 「同じSELECT文を使ったDELETE文の件数」が一致しない現象が起き、困っています。 【SELECT文】※2件返ってきます。 SELECT   a.部署コード,   a.社員コード FROM   社員マスタ a,   組織マスタ b WHERE   a.部署コード = b.部署コード 【DELETE文】※50件 DELETEされます。 DELETE TABLE   社員マスタ WHERE   EXISTS   (   SELECT     a.部署コード,     a.社員コード   FROM     社員マスタ a,     組織マスタ b   WHERE     a.部署コード = b.部署コード   ) 環境はSQLSERVER2005です。 件数はSQLSERVER2005のカウントオプションで表示されているものなので間違いないです。 宜しくお願いします。

  • microsoft sql server 2008

    Window7にSQLServer2008R2をインストールしたのですが、インストール最中にエラーがでてしまったので、アンインストールを行っています。 プログラムの機能で"microsoft sql server 2008 r2 setup (english) "が削除出来ません。 これが削除できないと、再インストールが出来ないみたいです。 どうにか削除したいので、やり方をご存じの方がいらっしゃいましたら、ご回答のほどよろしくお願いします。

  • tempdb の適切なサイズ

    SQL Server 2008を使用したシステムがあるのですが、複数の端末からアクセスする為、処理が遅くなったりして困っています。 そこで、高速化を図る為、色々と調べていたら、tempdbファイルのサイズを増やす、及びtempdbファイルをCPUのコア数分に増やすと良いというのを見付けました。 が、tempdbの適切なサイズを調べる方法が、いまいちよく分かりません。 どなたか、分かり易く助言して頂けると助かります。 OS:Windows 2008 Server DB:SQL Server 2008 Workgroup    よければ、SQL Server 2008 Expressの場合も 以上、よろしくお願い致します。

    • taka077
    • 回答数1
  • 処理件数を非表示にしたい

    ManagementStudioでストアドプロシージャの開発をしています 開発中、デバッグのためにプロシージャをコールすると、SQLの発行の度に 「何件処理されました。」 「何件処理されました。」 「何件処理されました。」 「何件処理されました。」 「何件処理されました。」 ・・・ と処理件数が表示され、確認の際に邪魔で困っています。 処理件数を非表示にするにはどうすれば良いでしょうか? また同様に、SELECT文の発行ごとにSELECT結果がグリッドに表示されるのを非表示にできないでしょうか?

  • Symantec System Recovery

    【環境】  OS : Windows Server Standard 2008 SP1 バックアップソフト : Symantec System Recovery 2011 Server Edition (以下SSR) DBMS : MS SQL Standard Edition 2008 【背景】 SSRを使用してシステム部分(Cドライブ)や、ユーザデータのバックアップ(フォルダ単位)をしようとしています。 その際、静止点をとるために、バックアップ前後にDBMSの停止/開始を入れたいです。 そこで「バックアップ中のコマンドファイルの実行」機能を使おうとしています。 この機能ではSSRのジョブ実行中に以下の3つの段階でコマンドファイルを実行できます。  1.スナップショット作成前に実行  2.スナップショット作成後に実行  3.リカバリポイント作成後に実行 今回は、 1.にDBMSの停止スクリプト、2.にDBMSの開始スクリプトを実行しようとしています。 【質問】 Q1) 上記の【背景】に書いた内容は妥当でしょうか? Q2) 1.のスナップショット作成前にDBMSを停止する際、停止処理が完了したあとにスナップショットを取得するようSSRが内部で制御してくれるのでしょうか? 停止スクリプト実行と同時にスナップショット取得が開始されるのでは?という疑問を抱いています。 よろしくお願いします。

  • OPENROWSET関数を使用したインサート方法

    現在「vs.net2010 C#」を使用してプログラムを作成しております。 連携するデータベースに「SQL server2010 R2」を使用し、以下の構成のエーブルへデータをインサートしたいと思っているのですが、2点どうしても解決出来ない問題が発生してしまいどうにも原因が分からない状態です。 初心者の為、初歩的な事があまり分かっておらず、大変恐縮ですが、対応方法をご存じの方がいらっしゃいましたら、ご教授頂ければと思います。 ■テーブル構成 テーブル名:test ・ID UNIQUEIDENTIFIER PRIMARY KEY ・FILE_NAME1 VARCHAR(20) ・FILE_DATA1 VABINARY(MAX) ・FILE_NAME1 VARCHAR(20) ・FILE_DATA1 VABINARY(MAX) ■発生している問題 (1)webアプリの画面からファイルを参照し、そのファイルパスを取得し、インサートの際に利用しているのですが、パスの間にスペースが入っている為か下記のようなエラーが発生してしまいます。 ・実行SQL insert into test (ID ,FILE_NAME1 ,FILE_DATA1 ,FILE_NAME1 ,FILE_DATA1) select NEWID() ,null ,null ,'Book1.xls' ,x.* from OPENROWSET(BULK N'C:\Documents and Settings\USER\デスクトップ\Book1.xls', SINGLE_BLOB)AS x 「ファイル"ファイルパス"を開けなかったので、一括読み込みできません。オペレーティングシステムエラーコード 5(アクセスが拒否されました)」 C:直下等にファイルを移し実行すると正常にインサート出来るので、パスのスペースが原因だと考えているのですが、解決策を調べてもよくわかりませんでした・・・ (2)インサートの際に「VABINARY」列が複数ある時の記述方法について 1 insert into test 2 (ID 3 ,FILE_NAME1 4 ,FILE_DATA1 5 ,FILE_NAME1 6 ,FILE_DATA1) 7 select 8 NEWID() 9 'Book1.xls' 10 ,x.* from OPENROWSET(BULK N'C:\Documents and Settings\USER\デスクトップ\Book1.xls', SINGLE_BLOB)AS x 11 ,'Book2.xls' ,12 y.* from OPENROWSET(BULK N'C:\Documents and Settings\USER\デスクトップ\Book2.xls', SINGLE_BLOB)AS y 上記のように「VABINARY」列が複数ある時に、上の9.10行目は問題ないようなのですが、以下の11.12行目が構文エラーとなってしまいす。 本当は12行目以降にも、新しく列を作成し、インサートしたいと思っておりますが、10行目以降は 初歩的な記述方法の問題かとは思うのですが、自身の理解不足も相まって調べても解決できない状態です。 どなたかお力をお貸し頂けませんでしょうか? 以上、宜しくお願い致します。

  • PCとDBを更新したら、エラーが発生するように。。

    約5年ほど前に開発されたDBを使用したシステムがあるのですが、サーバPCが故障し、PCとDBを更新しました。それから「タイムアウト」や「デッドロックエラー」が発生するようになりました。 【更新前】 1.サーバ  ・OS:Windows2000Server  ・DB:MSDE2000 SP3 2.クライアント  ・OS:Windows XP SP3(導入当初は、Windows2000)  ・アプリケーション:VC++6.0にて開発  ・7クライアント  ・ODBCにて接続 【更新後】 1.サーバ  ・OS:Windows Server 2008  ・DB:SQL Server 2008 Express Edition 2.クライアント  ・OS:Windows XP SP3(導入当初は、Windows2000)  ・アプリケーション:VC++6.0にて開発  ・7クライアント  ・ODBCにて接続  ※クライアント側は何も変わっていません。 発生するエラーは、以下の2つです。 (1)タイムアウトしました。 (2)トランザクション(プロセスID○○)が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションの対象となりました。トランザクションを再実行して下さい。 サーバPCが故障した際、蓄積されていたデータをかなり削除した為、早くなる事はあっても、遅くなる?とは夢にも思いませんでした。当然、更新後のPCも5年前よりかなり早くなっているハズですし...。 営業からは、早くなんとかして欲しいと言われますが、未だに解決の糸口が見付かりません。 どなたか助言をお願い致します。

    • taka077
    • 回答数3
  • 同一コード毎に最新の名称を取得するSQL

    いつもお世話になります。 以下のデータ構造において、以下の条件にあてはまるレコードを 取得するにはどのようなSQLになりますでしょうか。 (1)同一のコード、区分において、有効期間開始日が最新のもの (2)同一のコード、区分、有効期間開始日において、有効期間終了日が最新のもの 【テーブル】 ※主キー:コード、区分、有効期間開始日、有効期間終了日 コード 区分 有効期間開始日 有効期間終了日 名前 10000 A01 19800101 99991231 名称1 10000 A01 20000101 99991231 名称2 20000 A01 19800101 19991231 名称3 30000 C01 19800101 19991231 名称4 30000 C01 19800101 99991231 名称5 30000 B01 20000101 99991231 名称6 40000 D01 19800101 99991231 名称7 40000 D01 20000101 20201231 名称8 ↓ 【取得結果】 10000 A01 20000101 99991231 名称2 20000 A01 19800101 19991231 名称3 30000 C01 19800101 99991231 名称5 30000 B01 20000101 99991231 名称6 40000 D01 20000101 20201231 名称8 ようするに、最新データの名前のデータを取得したいのですが、その最新の 定義が上記にあげたものになります。 連続投稿になってしまい申し訳ないのですが、どうしてもスマートな SQLを思いつかず、皆様のお知恵をお借りしたいと思った次第です。 宜しくお願いします。

  • 指定した区分と一致するコードは取得しないSQL

    いつもお世話になります。 以下のデータ構成で、区分に「A01」「D01」のいづれかが含まれているコードは 取得しないようにしたいのですが、これを、SQLのみで実現するためにはどのように すればよいでしょうか。 【テーブル】 コード 区分 10000  A01 10000  B01 10000  C01 20000  C01 20000  D01 30000  B01 30000  E01 40000  B01 40000  E01 40000  F01 ↓ 【結果】 30000 40000 ※コード10000はA01が含まれており、20000はD01が含まれているため対象外 普通のプログラムならば、全て取得してきて、ループしながら該当する区分の場合は continueするなりしてはじけばい、というように想像できるのですが、SQLのみでやるということで、 ループ処理は行えないためどうしてもスマートな方法が思いつきません。 何かよい方法はないでしょうか。 宜しくお願いします。