1 :
NAME IS NULL :
04/08/20 23:36 ID:19KWsGbt
2げとずさー
>>1 乙
前スレの張り直し
--------------------------------------------------------------------------------------------------
拡張ストアドを登録して実行したところ
ライブラリ 'hogehoge.dll' のストアド関数 xp_hoge でアクセス違反が発生しました。SQL Server はプロセス 52 を終了しています
と表示され実行できません
DLL自体は市販のものでVBやCで組み込んで実行できるものです
拡張ストアドの呼出し手順が悪いのか
そもそも専用に作られていないDLLが呼び出せないものなのか
よろしくおながいします
4 :
NAME IS NULL :04/08/21 20:41 ID:TpGD4Dog
>>3 市販のものなら hogehoge.dll を作った所のサポセンで聞いてくらさい
その URL は復元方法について書いてないと思うのは気のせいか?
と思ったら下の方に書いてた。
8 :
NAME IS NULL :04/08/31 19:34 ID:NJTux1oZ
IDのないテーブルにviewを作成する際にIDを付けた形で、viewにしたい。 どうすればいいでしょうか?
9 :
5 :04/09/02 01:48 ID:???
クエリアナライザからバックアップ取ったらうまく行きました。 とりあえず報告
>5 もう解決しているみたいですけど・・・ DBが破損しているときのトランザクションログのバックアップは no_trancateオプションでbackup logステートメントを実行します。 ちなみにこの実施はエンタープライズマネージャからできません。
11 :
NAME IS NULL :04/09/04 01:09 ID:xNpdTK5u
バックアップコマンドにてバックアップを行いました。 バックアップファイル名などは、DBに格納されているのでしょうか? 今までバックアップしたバックアップファイル名などが履歴として 管理されているDB&テーブルを知っている人教えてください。
DeviceにバックアップしてるならEMから確認できる。 しかし ステートメントで、しかもファイルにバックアップしてたら確か残らなかったと思う。 (つまりこの場合はSQLに管理されていない) ので、個別にファイルにバックアップしてしまった場合は自分で判断して復元するしかない。
13 :
NAME IS NULL :04/09/05 02:24 ID:/+gfyBEq
masterデータベースをリストアするには シングルモードでサービスを起動する必要があるのですか? シングルモードで起動するには、どうすればよいでしょうか?
14 :
5 :04/09/05 03:32 ID:???
サービスのプロパティで開始コマンドに「-m」を入力し、開始ボタン押下
15 :
NAME IS NULL :04/09/05 10:31 ID:/+gfyBEq
ログ配布を設定しているユーザDBに対し フルバックアップをしてしまったら もうログ配布は出来なくなるのですか?
んなこたーない
17 :
NAME IS NULL :04/09/06 09:13 ID:iAHztlGz
すれ違いだったら申し訳ないが、XPのSP2いれたらプログラムからの 接続にSQLServerが応答しなくなりました。アプリケーションもDBも ローカルマシンなのですが、対処法はあるでしょうか?ちなみにWin ファイアウォールは切ってます。SQLServerはSP3適用済みです。 はぁー。
19 :
NAME IS NULL :04/09/06 12:51 ID:6OuY8Pjq
>>17 はずしてるかも、知れませんが。
SBS2003+SQL2000ServerにWorkgroupで接続している、クライアントのWindowsXPマシンを
SP2にバージョンアップしたら、クライアントPCのEnterPrizeManagerを起動して
SQL ServerのDBを見に行こうとしたらSQL Serverを認識しませんでした。
(nullUser・・・・のメッセージがでます。調べたらID・パスワードが異なるというような?)
その他、ネットワークプリンタが動作しなくなりました。(認識していない)
ネットワークドライブをSP2にアップする前に定義してたんですが、
エクスプローラからネットワークドライブの内容を見ようとすると
ID・パスワードの要求が来ました。ID・パスワードを入れると、
ネットワークプリンタは動作するようになりましたが、SQL Serverは
認識しません。
結局ネットワークドライブを一度削除してから、再設定したら、
ネットワークドライブに対するID・パスワードの要求が来なくなり、
また、SQL Serverへの接続ができるようになりました。
XPをSP2にバージョンアップすると、ネットワークドライブの設定が
おかしくなる?(内部のIDが不整合を起こすのかな?)のでしょうか。
20 :
NAME IS NULL :04/09/06 19:46 ID:MdKgnRoT
SQLServer2005の評価版ってもう使ってる? 2000から2005への移行はどんな感じでやってるの?
21 :
NAME IS NULL :04/09/08 00:27 ID:Oe+LSjEK
質問。 SQL SERVERをインストール エンタープライズマネージャを機動・・ しようとすると、「スナップインの初期化ができません」 とでて、機動すると左メニューのサーバー一覧のところが なにも表示されません。 症例ありますでしょうか。 環境変数の設定は狂ってなさそうでした mmcに追加もできません。
22 :
NAME IS NULL :04/09/08 06:06 ID:eoItyhvr
SQL Server で、 MySQL の mysqldump のような ダンプを取るにはどうすればよいのでしょうか?
23 :
NAME IS NULL :04/09/08 07:23 ID:nKIRbi5D
>>22 DTSでダンプファイルを出力って出来なかったっけ?
25 :
NAME IS NULL :04/09/08 13:17 ID:eoItyhvr
>>23-24 THX
今会社で使っているシステム、大部分は MS SQL Server
か MSDE なんですが、上の判断で最近はオープン系の
RDBMSも結構混在してきました。
たとえば HiRDB とか MySQL とか PostgreSQL とか。
いま悩んでるのが、いわゆる GUID をキーにして
作成しているテーブルが多く、その一部を上記の
RDBMSたちにぶち込まなければならないこと。
GUID に適した型なんて、MS 以外の RDBMS には
ありませんから…
皆さん、他のDBも混在してのシステムにおいて、
GUIDなどはどういう型でぶち込んでるんですか?
26 :
しろうと :04/09/08 16:06 ID:qLRRm9Vl
>>25 テキストに変換してINSERTすればどう?JOINはできないけど・・・
27 :
NAME IS NULL :04/09/08 16:12 ID:eoItyhvr
>>26 ふーむ、テキストに変換ですか。
それも一つの解決法ですね。
やっぱしそれくらいしか方法ないんですかね。
実質的には128ビット整数だから変換して…
ってのも考えたんですが、128ビット整数を
格納しようとすると結局バイナリオブジェクトとして
格納することになるんですよね。
GUID使った時点でMS限定になるのかな、やっぱり。
>25 レプリケーション以外であえてGUIDを使うシーンってどんなの? Accessのオートナンバー的な思想で使ってるって事か?
GUIDを32ビット整数4つに分割すればJOINもできるけど面倒だな
GUIDをキーにしてる時点で、あまりRDBっぽくはないな 正規化をしない方針なのかな
31 :
NAME IS NULL :04/09/09 07:16 ID:W6a6rf8N
>>28 どうもそうらしい。
俺が来る前のことなのではっきりしたことは分からないんだが、
もともとは Jet のレプリケーションつかった Access アプリ
だったらしい。
で、そのときに s_GUID をキーにして設計していたらしくて、
そのまま他のテーブルの外部キーなんかもゼンブ GUID
になってる orz
その後 MS SQL Server に移行したらしいが、 GUID の使用は
引き継がれたままで、今度オプソ系の RDBMS が入ってきて
困ったことに。
>>29 なるほど。話は変わるけど、別のところで MD5 の
メッセージダイジェスト値を格納する必要が出てきて、
それはどういう型で格納するの?ってのがいま議論中。
文字列にしてインデックスつける?なんか無駄な気がする。
32 :
NAME IS NULL :04/09/09 11:59 ID:wL9F3VFG
>>31 全部BASE64でテキスト化しちまえ
領域長のムダが気にならないんなら
普通にヘキサでテキスト化すればよし。元の倍になるだけだしな。
いずれにせよ一手間入るが、まあやむを得ないだろう。
34 :
NAME IS NULL :04/09/09 19:58 ID:W6a6rf8N
35 :
NAME IS NULL :04/09/09 20:00 ID:W6a6rf8N
>>33 やっぱそういうことになりますか。
でもそのうちSQLの規格で256ビット符号なし整数とかの
型も用意されるんだろうな…とか妄想してみる。
>>35 IPv6の128bitアドレスを格納する型は出てくるんじゃないかな
37 :
NAME IS NULL :04/09/10 01:41 ID:AEyu2ovR
客先の営業所5箇所にスタンドアロンWin2KでVB+Accessで動くシステムがあります。 本社にWin2KServer+SQLServer立ててネット経由でレプリケーション(営業日のみ1日2-3回)したいのです SQLServer x 2 のレプリケーションしか経験なく、ネット等で調べてもイマイチだったので
そうですね。
40 :
NAME IS NULL :04/09/11 21:11:13 ID:ZlGp2E4m
設計の定石だと思うのですが,調べても載っていないもので教えていただきたいのですが, 可変長配列の内容をDBに入れたいときはどうするべきなのでしょうか? 想定しているのは,[code], [name], [URL1], [URL2], [URL3]・・・というレコードで, codeとnameの組み合わせは一意なのですが,URLが幾つ入るかは不明なのです. 方法としては, 1: テーブルを2つに分け,片方は[code], [name], [id]として,別テーブルに[id], [URL]のレコードを 延々と追加していく. でも,URLって最大でもそんなに多くの数はいかないと思うし,この方法は始めてDB使う自分には難しそう. 2: もう,最大でURLは30とか決め打ってしまう.[size]カラムを追加して使用[URL]数を管理する. これにしようかと思っているけれど,何か大人気ない気もして・・・ 3: 何かトークン文字を決定して,それをはさんで文字列を連結して,ひとつの[URL]に入れてしまう. でも,確か,URLってスペースとかコンマとか,全ての文字を使う可能性もありますよね・・・ 環境はSQL Server 2000で,言語はC#でADO.NETでDataGridなんかも使っている部分もあります.
[code],[name],[URL] というテーブルに延々と追加していく
42 :
40 :04/09/11 22:11:56 ID:ZlGp2E4m
>>41 なるほど,そういう風に入れていって,
読み出したい時には,[code], [name]をキーにしてマッチするURLを全て取得すれば
良いのですね.
しかも,入れていくのは必ず必要ですが,読み出しが発生する確立は低い仕事なので,
それが最も適していると思います.
どうも有り難う御座いました.
確立(w
44 :
NAME IS NULL :04/09/11 23:09:57 ID:iYQEts4e
2000から2005への移行はどうやってやる予定?
45 :
NAME IS NULL :04/09/12 19:08:06 ID:Sr0+DAmC
データ件数500万のテーブルから いろいろ集計用にデータ抽出ってのは無理がある? まだ許容範囲?
インデックスとサーバスペックの問題。
まともなDBMSならその程度の件数大した事無い。 そもそも、ただ件数だけを語っても無意味。
49 :
NAME IS NULL :04/09/15 23:28:27 ID:Lu6Yk6lY
インデックスってのがいまいちわからない。 目次をつけるようなものって概念はわかるが どうしたいときに、どうしたらよいのかがわからない
>49 電話帳に索引がなかったり五十音で並んでなかったら困るだろ?
FUNCTIONの中でINSERT INTO使って直接テーブルに新しいデータ登録しようとすると怒られる。 もう意味わからねーっす。
53 :
51 :04/09/16 04:48:01 ID:???
>>52 サーバー : メッセージ 443、レベル 16、状態 2、プロシージャ **********、行 23
FUNCTION 内での 'INSERT' の使い方が無効です。
これ。
ググってみたけどさっぱり症例が出てこねーっす。
負荷を減らしてみたいからUDF使ったらこれだ。さっぱり訳分からない…。
VALUESで設定する変数のデータ型は何度も確認したが、ちゃんと合っている。
マジ訳わかんねーっす。
問題のSQL文はこちら :
INSERT INTO テーブル名(
列名1,
列名2,
列名3,
列名4
)VALUES(
@変数1,
@変数2,
@変数3,
@変数4
)
>>53 FUNCTIONの中で普通のtableに対するinsert/update/deleteは出来ない。
FUNCTIONの中だけで使うtable変数ならOK。
詳しくはBooksOnlineでCREATE FUNCTIONの解説を読むべし。
ストアドで置き換えるしかないんじゃないの?
55 :
51 :04/09/16 05:51:00 ID:???
>>54 あ”ーホントだ。解説に書いてありました。
ストアドで置き換えます…ご迷惑お掛けしました。
56 :
NAME IS NULL :04/09/17 01:26:44 ID:SDsxdxim
ログ管理で、最近時間切れ(TimeOut)エラーが出るように なってしまいました。デフォルトの30秒を引き伸ばすには どうすればよいの?
57 :
NAME IS NULL :04/09/18 09:51:03 ID:tejhIpmq
SQLServer2000で セキュリティ監査関連のトレースをテーブルに吐いているんだけど、 あれって初めに設定するレコード数越えるとそれ以上もう書き込まなくなりますよね。 あのテーブル定期的に見るツール作ってセキュリティ監視したいと 思って居るのですが、ずっとはき続ける設定などはあるのでしょうか? 吐き出し先がファイルだったらローテーション出来るけど、中身はバイナリになっちゃうし。 プロファイラで確認するにしても、人手で事後になっちゃいますよね。 リアルタイムっぽく不正ログインなど検知したいような場合はどうすれば良いんでしょうか。
>>56 なんのタイムアウトなのかを書けよ。
まず、SQL Server にはクエリタイムアウトは存在しない。ロックタイムアウトがあるのみ。
そのロックタイムアウトもデフォルトでは無限に設定されている。
ロックタイムアウトを設定したいなら SET LOCK_TIMEOUT を使う。
クエリタイムアウトが発生している場合、それは SQL Server ではなく
アプリケーション(ミドルウェア)の仕業。ADO, ODBC, JDBC など使っている
ミドルウェアを提示しないことには、なんとも言えない。
61 :
NAME IS NULL :04/09/23 13:24:55 ID:xcLAWOnH
皆が使ってるシステムのデータサイズってどれくらい?
データサイズってなんでつか?
63 :
NAME IS NULL :04/09/23 22:12:31 ID:xcLAWOnH
データファイルのサイズのことなり
64 :
NAME IS NULL :04/09/23 22:13:05 ID:xcLAWOnH
うちは15GBくらいなんだけど少ない方なのかなぁ
データファイルのサイズに何の意味が? 増やそうと思えば幾らでも増やせる訳だし・・・
データファイルのサイズが、○○GB超えると動作が不安定になるとかって、 ベンダーに言われて聞いてみたとか。
ちなみに、7.0、2000ともに製品の仕様上は、32TBが最大だったはず。
MSDEは2GB
69 :
NAME IS NULL :04/09/24 01:40:05 ID:p56C03FH
オラクルは4GBの倍数に近くなるとデータが壊れることがあるって 怖いことがサラッとサポートレターに書いてあったな まあ保守に丸投げだから俺の知ったこっちゃないが
スペシャル初心者です phpmyadminの使い方がいまいちよくわかりませぬ movable typeでMySQL使う方法でインストール ログインして左側にテーブル?がズラーと出てるんだが これって管理しにくい ログインしてMovableTypeという感じのフォルダみたいなのをつくって そこから管理したいんだが ログインしてトップから左側にmt_ffffff mt_xxxxxxxみたいなのがズラーと並ぶというのは 直接database設定で mysqlx.db.sakura.ne.jpを指定したからだと思うんだけど 管理しやすいいい方法ないですか? フォルダのようにして例えばMT xoops etcがログイン時に出てくるようにしたい そして各々MT xoops etc をクリックすればそれぞれのデータが出るようになれば最高 できるんだろうけど設定の仕方がまったくわかりません どうかご教授おながいします はっきりいってMySQL,phpmyadmin知ってる人にとってはクソみたいな質問でスマソ ほんまわからん ウィンドウズ使い慣れてるが 「フォルダの作り方わからない」って聞かれてるようなものだからな、きっと
72 :
NAME IS NULL :04/09/27 16:03:41 ID:wde5Qh77
mysql_queryから取得した結果レコードで一番後ろのレコード に移動するにはどうしたらよいのでしょうか?
74 :
NAME IS NULL :04/10/03 01:00:57 ID:5Mrnex2+
PDAとデスクトップPCを使ったシステムを考えています。 「Microsoft SQL Server 2000 Windows CE Edition」について伺いたいのですが、 1.この製品だけでPDA内でRDBMSとして機能しますか? 2.RDBMSとして機能した場合、デスクトップPCからも参照が出来ますか? 3.2が不可能な場合、どのような条件で可能になりますか? SQLServer2000がデスクトップPCにインストールされていれば可能になりますか? 開発環境は「VisuakStudio.NET 2003」+「.NET CompactFramework」 を想定しております。 申し訳ありませんが、どなたかご回答頂けませんでしょうか?
>74 俺が知ってるのは鯖CE1.0だけど、 1→○ 2→× 3→デスクトプーから直接CE鯖のDBを読む手段は無い。 レプリケーションして間接的に参照する事ができるのみ。 鯖CE落としてBooksOnline読むほうが早いんでないの?
>>75 早速のご回答ありがとうございます。
なるほど、デスクトップPCから直接
PDA内のDBにアクセスは出来ないわけですね。
詳細についてはBooksOnlineを参照させて頂きます。
取り急ぎ1点だけ確認させてください。
デスクトップ内のDBの内容の一部を
PDA内のDBに反映させることは
SQL文を使った操作だけで実現するのは不可能と言うことでしょうか?
78 :
NAME IS NULL :04/10/05 18:38:00 ID:dDc9pyND
SQLServer2000で中国語を扱いたいのですが、 どうすれば良いのでしょう? どなたかご教授お願いします…。
>>78 Unicode でいいんじゃないか?
それとも GB とか Big5 をそのままぶち込まなけりゃならない理由でも
中国語のことよくわかんないけど、
Unicode とのマッピングがちゃんと整備されてない?
NVARCHAR使えばUnicodeで中国語も入れられるよ。
81 :
NAME IS NULL :04/10/06 01:37:59 ID:Brrsw9Rf
Windows2003Server上のSQL Server2000とWindowsNT4.0上のSQLServer6.5で レプリケーションを組もうとしてるんですけど(2000がパブリッシャ) SQLServer2000のEnterpriseManager上で6.5のサーバに接続ができなくてサブスクライブに失敗してしまいます。 2000と6.5でレプリケーションはできるみたいなんですけど、手がかりが無く困り中。 なにか手がかりとかヒントとかご存じの方いたら教えてほしいです。 細工が必要なんでしょうか。
ストアドプロシージャをシリアライズ化するにはどうしたらよいですか?
83 :
NAME IS NULL :04/10/07 03:05:30 ID:UPbzabvY
WindowsXP上のアプリから、MS SQL Server2000(リモート)にODBCで 接続したいです。教えてください。 1.sqlsrv32.dllがODBCドライバですね? 2.WindowsXPをインストールすると、このODBCドライバは自動的に インストールされるのでしょうか?(いつも入っているみたいなので) それとも、ODBCドライバのインストール作業が要りますか?
>>83 > 1.sqlsrv32.dllがODBCドライバですね?
Yes
> 2.WindowsXPをインストールすると、このODBCドライバは自動的に
> インストールされるのでしょうか?(いつも入っているみたいなので)
> それとも、ODBCドライバのインストール作業が要りますか?
MDACコンポーネントをインストールするとODBCドライバもインストールされます。
WindowsXPはインストール時に標準でMDACが組み込まれるので別途作業は必要
ないです。
85 :
NAME IS NULL :04/10/07 18:27:49 ID:HW+iltsm
show databaseしてもtestしか表示されません。 本ではmysqlデータベースも表示されるとあるのになぜですか?
86 :
NAME IS NULL :04/10/07 19:03:28 ID:UPbzabvY
88 :
85 :04/10/07 19:17:08 ID:HW+iltsm
89 :
NAME IS NULL :04/10/07 19:26:39 ID:3Z16q19i
PHPがらみの質問で板違いかもしれませんが、SQL Serverとの連携で情報お持ちの方が いらっしゃれば、と思いこちらでも書き込みさせていただきました。 PHPからSQL Serverに接続したいのですが、接続がうまくいかず困っています。 SQL Server(データベース)自体は自家サーバー上に設置してあり、このデータベースに レンタルサーバー上にあるPHPページから接続してデータを処理したいのですが、 そもそもこれは可能でしょうか? PHPマニュアルのサンプルコードを参考に $conn=odbc_connect("DRIVER=SQL Server;SERVER=".$ser.";UID=".$user.";PWD=".$pass."; DATABASE=".$db.";Address=".$ser.",1433","",""); という感じで接続を試みているのですが、 「S1090 文字列またはバッファの長さが無効です」というODBCエラーが出ます。 このエラーの意味するところがまた良くわからず閉口してます。 PHP+SQL Serverの連携に関する情報があまりなくて、困っています。 ヒントでも結構ですのでよろしくお願いいたします。
90 :
81 :04/10/07 22:30:36 ID:???
81です 自己解決しました 失礼しました。
まるぽ
93 :
NAME IS NULL :04/10/08 20:32:14 ID:dArSDjPJ
94 :
NAME IS NULL :04/10/09 01:15:42 ID:cNFK6W7J
TRUNCATE TABLEを行うとトランザクションログに記録されないんですよね? ということは、TRUNCATE TABLE実行後は、フルバックアップする必要があるということですか?
MSDE2000 を MS からダウンロードして、会社の鯖に導入して社内イントラ用の DB サーバに 使うことは、ライセンスの問題はあるのでしょうか? それとも、会社でみんなでつかうには Office Dev. や SQL Server2000 Dev. など再頒布権の あるツールをひとつ買わないといけないのでしょうか。ご存知の方、教えて下さい。
>>95 再頒布権はオンラインで取得できる。
http://www.microsoft.com/japan/sql/msde/ ↓はFAQから引用
Q. MSDE を自分のアプリケーションで使用したいのですが、マイクロソフトの製品やサービスを購入しなくても MSDE を入手できますか ?
A. はい。MSDE は無償で ダウンロード できます。
Q. 開発しているアプリケーションの一部として MSDE を含めたり、再頒布することはできますか ?
A. はい。登録 していただくことで MSDE の再頒布権を無料で取得できます。また、以下の製品またはサービスのいずれかでランセンスを取得して MSDE を入手している場合は、アプリケーションの一部として MSDE を再頒布することを許諾します。
ASP.NET Web Matrix*
MSDN® ユニバーサル サブスクリプション、エンタープライズ サブスクリプション、およびプロフェッショナル サブスクリプション
Microsoft Office XP Developer Edition
SQL Server 2000 Developer Edition、Standard Edition、および Enterprise Edition
Microsoft Visual Studio® .NET Architect Edition、Developer Edition、および Professional Edition*
* ASP.NET Web Matrix をダウンロードして MSDE を入手した場合、ASP.NET Web Matrix を使用して開発するアプリケーションに組み込む以外の目的では使用できません。
97 :
95 :04/10/15 07:03:51 ID:???
>96 ありがとうございます。そのFAQをみると、 ・Office Dev. などで入手した MSDE -> Office Dev. など入手元ツールで作成したアプリにのみ 添付可。例えばOffice Dev. の MSDE とメモ帳で作った ASP をセットで再頒布は出来ない。 ・オンラインで入手した MSDE -> 自分で使うアプリに自由に使えるが、そのアプリを第3者に 販売・譲渡するには登録して再頒布権を入手する必要がある。 ・アプリに MSDE を添付しないで第3者に公開し、(Macromedia Flash Plugin のように)利用者 それぞれが個別に MS から MSDE をダウンロードするようにさせるのは可。 となるのでしょうか。 「使用権」は自分や社内など限定された環境で使う権利、「再頒布権」は第3者にアプリとセットで 配布する権利と解釈しました。 当方では顧客などに再頒布することは無くイントラでの使用のみなので、Web から ダウンロードした MSDE2000 を登録無しでつかうことにします。
vbでbegintranでトランザクション中のとき ストアドを呼びそのストアドでも begin tranをしている 場合、このトランザクションは入れ子で働いてくれますか? それともvb側のトランザクションと同一視されますか?
99 :
NAME IS NULL :04/10/19 13:11:03 ID:uvONeASE
SQL文で、既存の列から IDENTITY プロパティを削除するにはどうすればいいでしょうか?
>>99 IDENTITYを削除テーブルを新規に作成し、元データを入れる。
元テーブルの名前を別の名前にrenameし、
新規に作成したテーブルの名前を元のテーブル名にrenameする。
SQLコマンド中で、別のファイルのSQLを処理できますか?
な に を 言 っ て い る の か わ か り ま せ ん
Oracleでいうところの@ファイル名みたいな事?
そんな感じです
!!isql
>> 105 なるほど! ありがとう。
PGやってるんだが、バックエンドがSQL Serverなので 勉強中です。 本読むと管理関係にかなりの部分が割かれてるけど、 これらの知識はPGやSEにとっても役に立つの?
∧_∧ (;´∀`)<ちょっと勃った 人 Y / ( ヽ し (_)_)
>107 全体の設計や運用に関わる立場なら役に立つ。 というか、それ知らないとまともに運用できない。 PGレベルだと直接役に立つ機会は少ないと思うけど、知っといて損は無いよ。 アフォSEが作ったDBに突っ込みいれる事もできるし。
111 :
NAME IS NULL :04/10/24 15:47:36 ID:qYETNpDv
>190 ワロタw 不毛な残業をしたくなければ勉強すべき。
113 :
112 :04/10/25 01:22:09 ID:???
>109の謝り
114 :
NAME IS NULL :04/10/25 02:46:19 ID:/9sdc+cH
覚えといた方が良いでしょう。 PGだから覚える必要ないなんて事はない
まあ紙一枚の仕様書(メモだろ)を平然と渡すSEもいるからなぁ・・・全部PGが作ることになる
>107 プログラム&デバッグの最中に、間違って変な(異常に時間のかかるような) SQL 投げた時に、 即座にサーバー側でその SQL にキャンセルかける(プロセスkill)くらいのことはできたほうがよ いかと(w #で、調べるとインデックスが上手く機能してなかったりするんだよな、これが。
117 :
NAME IS NULL :04/10/25 19:07:04 ID:hgGHLtGd
無理。SQL Server 2005 で実装されてるから、もちょっと待って。あと1年くらい。
SQL Server 7.0で監査ログはどの程度の情報を収集できますか?
現在、SQLServer2000+VB6.0で発中なのですが、 1.Begin Transaction 2.TableAをUpdate 以上をクエリアナライザから実行して、トランザクションを終了させない状態で 3.VBで作成したアプリからTableAにSelect文を実行(ADO2.7使用) この時、3.ではSQLServer2000からレコードを取得できないでタイムアウトと なってしまいます。SQLServer2000ではこのような時はReadOnlyモードで TableAを読み込むことはできないのでしょうか? ※ちなみに、3.を実行してから、タイムアウト発生前に1.のトランザクションを終了させると TableAからレコードを取得してきます。
>120 もっと良い方法があると思うのですが SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED で一応読み取れます。あまりおすすめしませんが。
>>120 RollBackしてテストデータを元に戻したいとかか?
select * from TableA ↓ select * from TableA (READUNCOMMITTED)
NT4SP6+SQLServer7SP4で使用していましたが RAID構成のディスク障害の際に OSおよびSQLServerのファイルが壊れてしましいました。 OSはなんとか修復して復旧しましたが SQLserverを起動しようとすると エラー2140:WindowsNTの内部エラーが発生しました とでます。 SQLServerの再インストールしかないでしょうか?
Enterprise Managerについての質問をさせて頂きたく。 当方がW2K上のEnterprise Managerで作成したビューがあるのですが、対象となったデータベースはフィールド名、テーブル名とも2バイト文字で作られているものでした。 簡単な例を挙げると 「SELECT * FROM 管理者 WHERE マネージャーCD = '100'」 といったもの。 ところがこれをXP使用者がEnterprise Managerを使って見てみた所 「SELECT * FROM 管理者 WHERE マネ ー ジャ ー CD = '100'」 と、「ー」の両側に半角スペースが入力された形になっていたのです。 ・普通に実行して結果は出力可能 ・この状態で保存しようとすると 「[定義の表示]に出力列が無いか、またはFROM句に項目が含まれていません」 とエラーメッセージが出て保存が出来ない。 ・半角スペースを消して実行しようとすると実行できず、半角スペースが入った形に「修正」されてしまう。 等の現象が発生、XP使用者からは修正できないものになってしまいました。 因みにXPのSP1、2共に同じ現象。 このような現象についての心当たり、解決方法に付いて御存知の方はいませんでしょうか。
127 :
125 :04/11/04 11:23:00 ID:???
128 :
猫屋敷 :04/11/04 15:37:58 ID:/u63hAA3
[name] bird dog dog bear cat cat cat tiger .... という感じのレコードがあるのですが、nameが同じレコードを 附番して [name] [number] bird.............1 dog.............1 dog.............2 bear...........1 cat..............1 cat..............2 cat..............3 tiger...........1 .... という感じにしたいのですが、自動的に附番させる方法はないでしょうか?
129 :
NAME IS NULL :04/11/04 15:47:10 ID:1/6p/jx/
フロントエンドにACCESS2000で利用しています。 SQLseverの一時テーブルをACCESSのリストボックスで 表示させることはできないのでしょうか? Me.ListBox.RowSource = "SELECT * FROM #Temp_Table" のような記述をしてみましたが、エラーも起こらず何も表示しません。 #Temp_Tableとその中身の存在は確認済みです。 どなたか解説お願いします。
>>129 どういうロジックか分からないが、
#だと、テンポラリテーブルを作成する
プロセス(ストアド等)が終了するとクリアされる。
ログイン中消さないなら##を使う。
その辺りは大丈夫なのか?
MSのサイトには、Accessから一時テーブルアクセスするなら ストアドプロシージャ介して、というドキュメントがあったけど。
132 :
129 :04/11/04 16:45:36 ID:1/6p/jx/
>130 それは確認しました。 >131 納得しました。 ありがとうござました。
>128 このテーブルにtimestamp列を 追加しても問題ないのであれば SELECT d.name, c.seq FROM ( SELECT a.name, COUNT(a.name) AS seq, a.timestamp AS keycol FROM animal as a, animal as b WHERE a.name = b.name AND a.timestamp >= b.timestamp GROUP BY a.name, a.timestamp ) as c, animal d WHERE c.keycol = d.timestamp
次期SQL SERVERのYukonはパフォーマンス良くなってるのでつか?
>>134 要求マシンスペックも高くなってるけどな・・・
メモリを大量に積めば間違いなく今より速いと思われ
136 :
初心者 :04/11/05 11:39:23 ID:1ZTV7vdh
質問します。 次のような環境がネットワーク上にあります。 Aマシン:Win2000+SQLサーバー2000 Bマシン:Win2000+SQLサーバー2000 やりたいことは、 AマシンのC:\Databaseというフォルダー内にある 「Cost」というデータベースを、 BマシンのC:\Databaseというフォルダー内に新規にコピーしたいのです。 BマシンのCドライブ内にDatabaseというフォルダーは作成済みです。 Enterprise Managerを使い、まず、Bマシンのプロパティで、 「データベースの設定」タブ内の「新規データベースの既定の場所」の、 「既定のデータディレクトリ」と「既定のログディレクトリ」をC:\Databasに設定しました。 設定後、プロパティを再度確認すると、間違い無く設定はされています。 念のため、Bマシンのデータベースマネージャを再起動しています。 この状態で、Enterprise Manageで、Aマシンのデータベース内の「Cost」を マウス右ボタンでクリックし、全てのタスク==>データベースのエクスポートの順に選び、 Bマシンへ新規にコピーしています。 コピー処理終了後、Bマシンに正しくコピーできていることは Enterprise Managerで確認できるのですが、 コピー先フォルダーがC:\Databaseでは無く、 C:\Program Files\Microsoft SQL Server\MSSQL\dataになってしまいます。 C:\Databaseにコピーするにはどうしたらいいのでしょうか? どなたか、教えてください。よろしくお願いします。
>136 先にBのマシンにデータベースを作る。 もちろんデータファイルの場所はC:\Databaseで。 そのあとインポート。
138 :
初心者 :04/11/05 12:25:22 ID:1ZTV7vdh
>137 ありがとうございます。 やってみます。
139 :
NAME IS NULL :04/11/05 23:43:35 ID:HhlifwTI
教えてほしいのですが MS-SQLで Limit/ffset に代わるSQL文はどのように書けばいいのでしょうか? お願いします。
141 :
NAME IS NULL :04/11/07 11:48:09 ID:aLjLwZ2g
VC++を使って、 SQLServer2000のDBインスタンスを作成するプログラムを作りたいのですが、 どの辺を参考にすればいいでしょうか。 いくつか方法があるのでしょうか? インスタンスさえ作ってしまえば ODBC作って経由で何でもできるかなーと思っていたのですが いきなりつまずきました。
>>141 インスタンス?インストーラでも作る気でつか。
それならそれでsetupsql.exeを-sで呼びゃいいけど。
多分データベースのことだろうから、それでいくと
SQL-DMO使うのが一番楽。感動するほど楽。
80\Tools\Binn\sqldmo.dllをimportして使うべし
データベース作成まわりはどいせSQLServer依存になるから
SQLDMO使うのをためらうこともないでしょ。
143 :
141 :04/11/07 23:18:15 ID:aLjLwZ2g
初歩的な質問ですみません。 既存プロシージャの修正業務を行っているんですが、そのprcが (1) デカイTBL(20万行)から必要行を取り出して一時TBL(#TMPTBL)に挿入 (2) 一時TBLに対して色々複雑な処理をして出力TBLへ挿入 (3) 出力TBLを使って帳票出力 という流れで処理を行っているんですが、死ぬほど遅いんです。 で、質問なのですが、たとえ一時TBLと言えどきちんとIndexを作ってやらない とjoinとか沢山行ったら目も当てられないと思うんですが、SQLSvrの一時TBLは そういう意図で(上記のような流れの処理で)使うべきではない? というか、皆さんどういう局面で一時TBLを使ってるんですか?一時TBLを使う 時はちゃんとIndexも指定するのが常識ですか? #とはいえ、SELECT・・・INTO・・・で一時TBL作る際にはINDEXの作成はでき #ないですよね?
>>144 一時テーブルの使い方うんぬんはそれほど経験が無いので
何とも言えないけど、作業テーブル的な使い方で問題ないんじゃないでしょうか。
自分も大体同じような使い方をしています。
CREATE INDEXはストアドプロシージャー内で使えるので、
一時テーブル #TMPTBL 作成後
CREATE INDEX <index_name> ON #TMPTBL (column1, column2, .....)
でいいのでは?
(このINDEXはストアドプロシージャー終了後削除される)
>>144 間違った使い方ではないと思う。
チューンアップをするなら、まずクエリアナライザでそのプロシージャの
実行計画を表示させてボトルネックがどこにあるのかを探すのが先決。
それで一時テーブルのテーブルスキャンが原因となればindexを作ればいい。
帳票出力の事前処理で、わざわざストアドを使っているということは、カーソルから 1行づつフェッチして if文で分岐処理して… とかやってるんじゃないかな。 そういうストアド特有の処理を多用しているのであればインデックスを張ったところで 高速化は望めないよ。
148 :
142 :04/11/08 23:13:22 ID:???
149 :
NAME IS NULL :04/11/09 17:01:50 ID:QT8QbHq6
質問させてください。 win2000serverをwin2003serverにアップグレードでインストールしようとしたのですが、 SQL server2000がサポートされてないとメッセージが出ました。しらべると、SQL server 2000の SP3にアップグレードすればよさそうだったのでやろうと試みたのですが、手順がよくわかりません。 サイトに行くとなんか、3種類のファイルをダウンロードさせられ、実行ファイルを展開したまではいいの ですが、そっから先がよくわからないのです。 だれか優しく教えてください。
ストアードプロシージャについての質問なんですが、 可変長の配列をプロシージャに引き渡す場合、 どういう方法を取るんでしょうか? 何をしたいかというとWhere条件のIN文に不特定の 数の文字列を入れたいんです。 Where num IN('one', 'two', 'three') みたいな感じなんですが、これが0個の時もあれば 10個の時もある、みたいな形をとりたいんですが・・・
100個でも1000個でもテーブルに入れてしまえ。
IN('one', 'two', 'three')を一つの文字列として送ってしまえ
さらにかっこわるいな そういうストアドを作るという設計自体を見直したら?
キーになる値をストアドに渡せば済むようなテーブル設計にすべきだろうな。
MSSQLServerって、鯖のプロセッサがマルチかセ^H^Hシングルかでプロシージャ(内の SQL)の書き方を変えるっつーか意識しながら書くってのが常識ですか? いや、シングルプロセッサなテスト鯖でカリカリにチューニングしたプロシージャを評価 鯖で動かしたら8つあるプロセッサのうち、1個しか働いてなかったんで。 「シングルプロセッサな鯖で本番運用してみたら話にならなかったので、Xeon 8way位の eServerあたりを思い切って購入」みたいな時に困っちゃうと思うんですが・・・
???
>>157 どんなデータベースであろうと、聞いた事ないねえ。
それより物理ディスクやRAIDとかいう構成方法と、
データファイルやログファイルなんかの分割の組み合わせ的な
設計の方を考慮するべきだよ。
プロセッサを考えて処理方法を考えなければいけないのは、
スパコンのようなプロセッサ+ディスクのセットが複数で
構成されているばあいじゃないかな。
もちろん、データの分散も考慮してないと意味無いけど。
>>157 BooksOnlineでキーワードに並列って入れてみ。
大したことは書かれてないけどな。
並列クエリになるかどうかとは別として
クエリの実行プランがどうしても思うようにならないときは
UPDATE STATISTICS と sp_recomplie をやってみるといいかも。
いや多分、真にカリカリなプロシージャを目指すと、singleかmultiかを意識する必要がありそう>MSSQL シングルプロセッサの場合、複雑な結合になるSQLよりは、あえてそれを分解して極々簡単なSQLを順次 直列に実行する方が早くなるケースがある。あるいは、まとめてselect/まとめてinsertな処理をあえ てカーソルでクルクル回した方が速いとか。 でもそんなプロシージャだと、マルチプロセッサ環境でも全く並列クエリにならない罠。 ある程度joinやsubqueryが沢山有るような複雑なsqlほど、マルチな環境できちんと並列化される。 ていうか、以前「極力joinは使わない方針で」といわれてprcを書かされたことがある(゚д゚; こういう方針で書くところは結構あるんじゃないかな?
そ、それってある意味アホアホって認めてることになるんじゃあ
カリカリチューンでオプティマイザの裁量余地をなくしてしまうと ハードや負荷状況・統計情報が変わったときに追従できないと思う。
,-――――――――‐-. / | / | / | l" Microsoft l lー-―――――――‐--、/l | '''二二_ ,,_ ト、ミヾニ┤ ヽ |,,,,,,,,_ ,、-──-、 ヾ、ミ三ミi \ | i`二ニ! `´二二,`''' `!彡ヾ,i i ! ゝ-- ノ ‐─‐‐ レ⌒Y ゙! '、 | ""/ ''''" 彡!)) / ヽ ヽ, ! / '´ レ'/ \ | i└= 人/ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ,! i ∠-,_ /| | < 4CPUだ、きっちり回せ。 ヽェニニメニニィ' 、,/ / | \______________ ヽ` ,,、 ,、/ / |_ _\_,,,、-''´ / ト, ヽ / ,r|::::'' / ノノ \ r┤ |;;;| ヾー / / /\ ノヘ| ∨ ,r'_/__,,_ /イ´/`ヽ、 ,,、-‐'''"~´-‐゙i,,ニ二!\ ,r''///-‐ヽ\/! / / `゙''-`ヽ ,r‐''''"´‐''"´ ヾ彡|─\ /彳" /ミ/i !/ / /〉 | ト、〃ヽ、 / /! /ヽシ i | / / ヽ\ \i// /ヾ / i| | ! \〃\/ヾ/ i \/\/
>163 だから本番運用後やハード買い替え後に追加対応で苦労するわけですヨ。 まあ、マッチポンプという気も(ry
4way以上の構成使うシステムって、ふつーマルチユーザーシステムだろ。 ひとつのクエリを複数 CPU で効率良く駆動するようにしなくても、 4つ以上のクエリが同時実行されれば CPU は十分に有効活用されるんだから クエリ単体は、単一 CPU 向けにチューニングしといてもいんじゃね?
>166 それを言うならむしろ逆じゃないか? マルチで最大のパフォーマンスを発揮するように書いておいて、実 際にパラレルでクエリを実行時するかしないかはその時のメモリな んかの状況次第でMSSQLが最適な方法を選択。 多分これがスマートだと思うが。
>>167 そんなにMSSQLタソは頭がイクない!
でも次の娘なら・・・?!
169 :
NAME IS NULL :04/11/13 02:08:12 ID:/IwXI261
>>157-168 SQLServerはマルチコアでのライセンス価格をシングルコアと同じにするらしいから、
あと少しすればそんな悩みは無用になる。
使い切れないトランジスタをひたすらコアの増加に向けてくるから、
これからムーアの法則以上の速度でサーバの能力があがる。
オラやDB2はマルチコアはライセンス料×コア数だから使う必要なし。
>オラやDB2はマルチコアはライセンス料×コア数だから使う必要なし。
あれ、まだ態度を表明していなかったのでは?
いずれにせよMSに追従すると思うけど
つーか、論点が違うんですけど旦那
>>169
171 :
170 :04/11/13 08:02:18 ID:???
>>170 論点ずらしてすみません。
ただオラとDB2は現状すでにライセンス料×コア数ですよ。
単純に追従するかは疑問ですよね。
ただこの話題に触れている人って少ないですよね。
導入コストに直撃するはずだけど。
オラは、RACでのスケールアウトをPRしまくっているけど、
スケールアウトでサーバコストを下げても、オラのライセンス料が
高すぎるから意味ないし。
マルチコアはスケールアップで、RACでの性能向上の意味を
薄れさせかねない。
マルチコアってDBの性能を素直に上げてくれるのかなあ・・・ マルチCPUならスループットに影響出るだろうけど、マルチコアってちょっと怪しい
173 :
170 :04/11/13 08:34:54 ID:???
メモリ帯域がネックになるけど、そこはインテルなどのメーカーも
承知済みで対策を考えている。
マルチCPUと比べると、
・キャッシュが半分(デメリット)
・データの同期のコストが低い。(メリット)
・Opteronのようなメモリバス内蔵だと、全体としてのメモリ帯域が
半分(XEONでは関係なし)(デメリット)
・シングルコアに比べてクロックが低い可能性がある。(デメリット)
・バス競合をうまく抑えられる可能性がある。(メリット)
まあ一長一短だが、肝心な事はCPU業界全体がこちらに向かっている事と、
うまく使えば2WAY以上は、急上昇するサーバのコストを抑えられる事。
http://pc.watch.impress.co.jp/docs/2004/1112/kaigai133.htm
>・Opteronのようなメモリバス内蔵だと、全体としてのメモリ帯域が >半分(XEONでは関係なし)(デメリット) これってXEONならメモリコントローラをコア数分つけられるってこと??
175 :
170 :04/11/13 21:48:40 ID:???
>>174 説明足らなくて済みません。
まず質問の答えはNO。
XEONは、
(1WAY)
CPU−チップセット−メモリ
(2WAY)
CPU−チップセット−メモリ
CPU−|
Opteronは、
(1WAY)
CPU−メモリ
(2WAY)
CPU−メモリ
|
CPU−メモリ
XEONはメモリコントローラを内蔵していないで、チップセット経由で
メモリアクセスだから、2WAYだとメモリ帯域がCPUあたり半分になる。
しかも2CPUだとFSB(CPU-チップセット間)のスピードも1CPUほど出せない。
でもOpteronはCPU毎にメモリコントローラが内臓されているから、
2WAYならシステム全体としてのメモリ帯域は2倍になる。
だからOpteronの方が、2WAYでの性能の伸びが大きい。
176 :
NAME IS NULL :04/11/14 12:18:31 ID:4TxXXTd4
わけあってストアードプロシージャが 使えないんだけど、アドホッククエリの中に トランザクションや変数や分岐とかの 普通はストアードで書きそうな記述をしたいんだけど、 これって問題とかあるのかね?
sp_executesql で実行した結果を変数に取得する事は可能でしょうか。 set @sql = N'Select count (*) Table_' + convert(nvarchar(16),@TableCode) + ' where id=1 ;' EXECTE sp_executesql @sql 上記の、count(*) の結果を変数に取得したいです。 同一内容のテーブル名が業務毎に複数有るので、テーブル名の切り替えの為に sp_executesql を使っています。
179 :
177 :04/11/16 09:07:39 ID:???
a,ストアド2つ構成にすれば良かったのか。 ありがとうです。
Pentium III x 2 , Windows2k Server(sp2) の構成で SQL Server 2k std. を使ってるんだけど CPU負荷がそれぞれ 50% しかいかない。 100% フルに使わせるにはどうしたらいいの?
もっと負荷かけりゃいいんじゃねーNO?
しょうもない話ですみませんが、みなさんは tinyint, smallint, int など、使いわけていらっしゃいますか? 今は 0 , 1 の値しかとらない事が明確な場合でも、smallint で定義しています。 こういった場合 bit もしくは tinyint を使うべきでしょうか? smallint で定義しているのは、フラグ関係のフィールドは一貫して smallint で定義させている、という手抜きをしているだけの理由です。 アドバイスください。
私は ナントカint系 は int しか使わないです。 0,1の場合はbitを使いますが、 フラグだったものが将来コードになりそうな場合int使っちゃいます。 (1:on/0:off の場合 bit →→→ 将来 1:on 0:off 2:ready になりそうならint、 説明のフィールドにコメントを残しておく。) 自分はデータベース専門じゃ無いのと、設計書等を十分に残せないまま 次々開発せざるを得ない職場なので、他の人が読んだときに わかりやすい事を一番に心がけてます。 私の勝手な思いこみかもしれないけど、bool型みたいなのはbitで定義した方が 他の人が見たときにわかりやすいんじゃないかな?
>>180 スピンループするストアドを2個走らせれば100%まで行くだろ
マジレスすると、メモリかディスクがボトルネックになってる可能性がある。
Standard editionだとメモリは2GBまでしか使えない。
案外Win2KSP4にしたらあっさり100%まで使われたりしてな(根拠無)
>>184 たしかにディスクがボトルネックかもしれん。
調査してみる ノシ
クローズド環境だし、いまさらspクラスのパッチは怖くて無理('_`)
186 :
NAME IS NULL :04/11/29 19:57:35 ID:ivioTFDb
VB6でプログラム組んでますが SQLServerとの接続について次の2つの方法のどちらが主流なのでしょうか? (1)プログラム起動時に接続、プログラム終了時に切断 (2)イベント(等)発生時に接続、処理終了後に切断。 待ち状態時は常に切断状態。 あとそれぞれのメリット、デメリット等あるでしょうか?
クライアント数少ないなら(1)多いなら(2)とかかな。 Connectionは重い処理なんで、繋ぎっぱなしに越した事はないかと。
場合によるなぁ。昔コネクションプールしまくりのPG作ったけど、 ユーザさんが途中の画面で放置するので処理毎に切断するようにした。 主流とか無いんじゃない?好みと要件次第の様な気がする。
189 :
186 :04/11/29 21:49:00 ID:ivioTFDb
>>187 >>188 ありがとです
ケースバイケースって事みたいですね。
どの場合にどちらを使うかという判断規準をもうすこし聞いてみたいですね
クエリアナライザの起動時にどのデータベースをしようするか設定 できないですか? use db_nameみたいに
>>190 sp_defaultdbでログインの既定データベースを変更するとよろし
192 :
191 :04/11/30 18:08:10 ID:???
>>190 またはコマンドラインからisqlw <option......>でクエリアナライザを起動するかだね
193 :
NAME IS NULL :04/11/30 20:00:09 ID:WlF48P8n
ODBC接続すると、何秒位かかりますか? やっぱ、基本はConnection Poolingでしょうか?
>>193 >ODBC接続すると、何秒位かかりますか?
自分のパソコンのCPUとネットワーク回線速度とトラフィックとDBサーバのスペックと負荷状態による。
>やっぱ、基本はConnection Poolingでしょうか?
何の基本か分からないけど、自分のパソコンにMSSQLをインストールして自分一人だけで使うってのならプーリングするだけ無駄。
195 :
NAME IS NULL :04/11/30 21:56:04 ID:4Do0EdsB
てゆーか、SQL鯖の再接続が、一般的というか、他DBに比べて速いか遅いか位教えてYO!
196 :
190 :04/12/01 10:17:00 ID:???
>191-192 ありがとうございます!
DBASE IVより早かったよ
>183 bitだと同一テーブルに8列までは1バイトの記憶域にまとめて格納できるらしい。 9列になると2バイトとると。 そんな自分は16bitで足りなさそうなとこは32bit割り当ててみたりと適当です。 #intって16bit?
日付がvarchar型で '2004/12/01' みたいにはいってて、これをある期間で抽出したいとき、 明示的に datetime に CONVERT しないで SQL Server に暗黙の型変換させたほうが早いのね。 今まで 600MB 約 1MレコードのテーブルにADPのサーバフィルタで convert(datetime, 日付) between convert(datetime, '2004/11/01') and convert(datetime, '2004/11/30') とかやっててタイムアウトが多かったから(ローカルのMSDEで実行したら4時間くらい ディスクフル回転で100GBくらい読んでた)、おかしいとは思っていたが…。今は 日付 between '2004/11/01' and '2004/11/30' にしている。 しかしなんで高々600MBのテーブルを100GB近くも読みに逝ってたんだろう?
それ、日付じゃなくて文字列の比較じゃない? いや、結果が一緒だったらいいんだけど。
201 :
199 :04/12/01 22:01:52 ID:???
>200 Σ(゚Д゚|||え、そういわれてみればそうか…。まあ確かに年月日で並んでれば結果は同じだからいいか。
202 :
NAME IS NULL :04/12/01 23:08:26 ID:SwPYFPER
>>195 SQL鯖のODBC接続は凄く早いが。秒なんて掛かからね。
>>195 てゆーか、お前一人だけしか使わないのなら一般的じゃないっていってるだろというか、他DBに比べて速いか遅いかって何と比べてんだ位教えてYO!
>>199 betweenとか大小比較の時に変数や関数を指定すると
indexを使わないでテーブルスキャンしたり
無駄にループする実行プランになることがある
205 :
195 :04/12/02 09:05:14 ID:RE9blmZt
>>202 体験版でテストしたけど、隣に置いたPCに瞬時に接続するね。
別の建物というか距離のあるイーサネットのDBに接続すると10秒近くかかるけど、
RDBなんだからしょうがないね。
>>203 Sybase、ポスグレ、MySQL、Firebird、Ora、なんかと。
>>205 ISDNルータを挟んだ別セグメントのSQL Server相手でもそんなには遅くないけど。
>205 物理的な距離とネットワーク的な距離は別問題だろ・・・
えーっと、まじめに答える。 >ODBC接続すると、何秒位かかりますか? >やっぱ、基本はConnection Poolingでしょうか? ODBC接続とコネクションプーリングは比較するようなものじゃない。 ODBCはあくまで規格だから、ODBC接続でコネクションプーリングするってできるし。 あとコネクションプーリングを採用する際のメリットはコネクションの確立と解放の時間が無くなることであり、 デメリットとしてはコネクションつなぎっぱなしになることと、順番待ちが発生すること。 逆にDBサーバ側から見れば固定数しか来ないっていうメリットにもなる。 ここいらへんはトレードオフだな。 >他DBに比べて速いか遅いか ODBC接続でMSSQLに接続するのと、ODBC接続でオラクルに接続するのと、ODBC接続でポストグレスに接続するのと、 比べる意味あるのか? あとアドバイス。 単語だけじゃなくて、ちゃんと意味を理解しろ。理解できるだけの基礎知識をつけろ。 あきらかに知識がなさ過ぎてただのバカな質問に見える。 キャベツと千切り、どっちがうまいですか?と聞かれてどうやって答える?
俺なら ギャベツのせんずり って答える。
久々にガッ
212 :
NAME IS NULL :04/12/04 13:14:02 ID:AIpsSRcu
>>208 >ODBC接続でMSSQLに接続するのと、ODBC接続でオラクルに接続するのと、ODBC接続でポストグレスに接続するのと、
>比べる意味あるのか?
あるだろ?
ODBC接続でオラクルは問題ありだろ? とくにM$のは。
>>208 SQL鯖へのODBC接続時間とかConnection Poolingとか言ってるのでWEBアプリの話だと思われ。
Connection Pooling無しで毎回SQL鯖にODBCで再接続した場合に
実用的な速度で再接続出来るのかと聞いてるのだと思う。
こんな質問をするヤツに任せるとトンデモなWEBアプリが出来上がる悪寒。
>>212 A社製のODBCドライバでオラクルつなぐのと、B社製のODBCドライバでオラクルつなぐのと比べるなら分かる。
もしくはオラクルつなぐのにODBC使うのとJDBC使うのとSOAP使うのとで比べるなら分かる。
他DBに比べて速いか遅いか位教えてYO!とか言われてもなあ
>>213 それでConnection PoolingとODBCはどっちが一般的なんだ?
ADO.Net わかりにくーい(; x ;) 慣れればアレなんだろうけど・・・
×慣れればアレ ○慣れる頃にはアレ
一台のPCをサーバーに見立てて、それにMSDEをインスコして、 そのデータベースを他のPCからADO.NETで利用する場合、 クライアント側のPCにMSDEのクライアント版みたいなのが必要になったりするんでしょうか?
いらない。
>>223 それはマイクロソフト日本法人が非公式に日本apacheユーザグループに出した回答を元にしていると思われ。
正しくない部分が多々あるDQNな文章で信憑性はゼロ!
俺が適当にどっかのネット上にジョークを書いたら、ソースはこれだYO!とか言われるんだろうか
SQL Server 2000 の管理面、ストアドプロシジャーでの開発など含めて 勉強できる書籍でおすすめのがあれば教えていただけないでしょうか?
>>226 マイクロソフトの本。
管理面で上下巻、tansact-sql(ストアドプロシジャー)でで上下巻の計4冊。
金あるならセミナー行け。その方が時間的にお得。
228 :
NAME IS NULL :04/12/14 21:25:01 ID:lFJ3oA33
EnterPriseManager からインスタンスの追加はできるのでしょうか?
インスタンス追加はインストールしなきゃならんのでCDからインストーラ起動で。 SQL鯖は1インスタンスに複数のデータベースを持てるからそっちを検討してみてぁ?
230 :
228 :04/12/15 21:07:02 ID:i0yZMr72
>>229 ありがとうです。
一つ疑問があるのですが
SQLServer2000はSP3にしてあるのですが
CD(SQLServer2000)からのインストールでインスタンスを追加すると
それは自動的にSP3になるのでしょうか?
>>230 なりません。
名前付きインスタンスには別途サービスパックを適用する
必要があります。
MSDEとAccessでCSシステムを作成する場合、一般的に ストアドプロシージャでBeginTrans、CommitTransを記述するようにするもの なのでしょうか? Accessチックにクエリビルダで線をピッピと引っ張って作ってましたが 実はありえない事をやっているのかと不安になってきました。
AccessプロジェクトならほとんどのオブジェクトはMSDE側に作られるから 問題ないと思います。Accessからできることだけで操作したほうが見通しが 良いですし。トランザクションはネストできますからストアド内で使うか どうかは状況しだいですが、普通はAccess側から操作すれば十分です。 JET(mdb)のリンクテーブルって話ならまた違いますけどね。
ありがとうございます。このまま進めますです。
235 :
NAME IS NULL :04/12/24 18:21:41 ID:bNmDGfoN
SQL Serverは初心者なのですが教えて頂けないでしょうか? OracleでいうDMPはSQL Serverではどれにあたるのでしょうか? DTSを使用するとは思うのですが・・・。
困った・・・
鯖側DBは
Chinese_Taiwan_Stroke_CI_AS
で、DB・テーブルを作り
クライアント側(日本語Win2000)で接続して
BIG5のテキストデータをperl+DBIで書き込んだのだが
見事に文字化けしてしまう
クライアント側を台湾版のOS(or 日本語版の地域設定で台湾)にしないとダメなのか?
>>235 DB間のコピーならDTSだよ
237 :
236 :04/12/25 14:43:33 ID:???
>>236 クライアント側はUnicodeにすればサーバ側で変換してくれるんじゃないの?
239 :
236 :04/12/25 17:39:33 ID:???
SQLクライアント設定ユーティリティのDB-Libraryオプションタグで
ANSIからOEMへの自動変換
と
インターナショナル設定
のチェック(両方)を外したら解決した・・・
たぶん片方だけで済むはず
>>238 perlなんで
(各コードページの定義ファイルが必要だし・・・)
>>239 すまん。前にperlでもUnicodeが使えるって聞きかじってたもんで適当に答えてしまった。
でもDB-Libraryが使われてるのならUnicodeはアウトかも
・任意のバージョンの DB-Library または Embedded-SQL for C を使用するアプリケーションは、TDS 4.2 を使用して通信します。
・TDS 4.2 は Unicode をサポートしません。nchar 型と nvarchar 型の値は、サーバーの Unicode 以外の Windows® コード ページを使用して char 型と varchar 型に変換されます。これにより、拡張文字が失われる可能性があります。ntext 型の値は取得できません。
DTSのどの設定にすればいいのでしょうか? @SQLServerの入っているPC ↓ ASQLServerの入っていないPC ↓ BSQLServerの入っているPC というふうにテーブルを移動させたいのですが@からAに移すときに どの形にして入れればAからBに移したとにBと@と全く同じ状態で 復元できるのでしょうか?
>>241 DTSは鯖間のコピーだった気がする
テーブル(デザイン)だけなら
(1)内のダミーにDTSを使用してコピー
この時
C:\Program Files\Microsoft SQL Server\80\Tools
フォルダ内に〜.TAB, 〜.PRC, 〜DR1, 〜.DR2のファイルが出来るから
これを(3)の鯖に対して"クエリ アナライザ"を使用してテーブル等を作る(この時に〜.TAB等を使う)
データはアクセスファイルにでもすればいい (レコードが多いと無理っぽ)
くそう 今の設定はChinese_Taiwan_Stroke_CI_ASなんだけど 大文字小文字は区別しない 半角と全角は区別するってどうやるんだ? あとbig5の記号で \xA2\x7E と \xF9\xFA も区別するようにしたい *unicodeでは後者が前者に変換されてる by EmEditor この辺unicodeは糞だな・・・
>>243 select * from ::fn_helpcollations()
where name like 'Chinese_Taiwan_Stroke%WS%'
246 :
NAME IS NULL :04/12/27 15:29:23 ID:x6k6atOm
今ウィンドウズ環境でMYSQLを使っていますが、何か簡単なバックアップの 方法はないでしょうか?
スレタイをよく読め。
漏れもMySQLスレかと思った
>>245 隠し関数を使ったわけでもないのに変って言われてもなぁ..
まあ、普通は使わない関数なのは確かだけど。
不要になったユーザー定義データ型を削除しようとしているのですが、 データ型は使用されています、とメッセージが出て削除できません。 依存関係では何も表示されませんし、スクリプトで全オブジェクトを出力して 作成された sql ファイルを見てもそのユーザー定義データ型を使用している ところはありませんでした。 ユーザー定義型を削除するにはどうしたらよいのでしょうか?
ストアドプロシジャーに関して質問です。 ストアドプロシジャーにするメリットとしては、処理効率?があげられると 思うのですが、3、4個のテーブルを JOIN して、5、6個程度の WHERE 句 が存在する程度の抽出 SQL でも、ビューで作成して利用するより、 同じ内容で、ストアドプロシジャーにするほうがレスポンスは向上する ものなのでしょうか? SELECT を行なう SQL で、ビューを利用するメリットと、ストアドプロシジャー にするメリットがいまいちつかみきれていません。 基本的に SELECT を行なう SQL であれば、どちらを選択すべきなのでしょう か?更新処理などがなくてもやはり、ストアドプロシジャーにしたほうが 効率はあがるものなのでしょうか? アドバイスのほど、よろしくお願いします。
結合や抽出の条件が単純なSQLで住むならビューでいい。 迷ったら、楽でシンプルであとから手を入れやすい方を選べば間違いない。
MSDEをインストールする時に指定したDisableNetworkProtocolsオプションって、 後から変更することは可能ですか? それとも、再インストールするしかないのかな・・・。
>>253 <インストールパス>\Microsoft SQL Server\80\Tools\Binn\svrnetcn.exeで変更できる
2000 DevEditionですが、WinXP-Pro-SP2にインストールすると、 「サーバーを起動し、指定した設定を適用しています...」のまま先に進まなくなります。 インストールタスクの強制終了もできず、Winも終了できず電源OFFするしかなくなるんです。 Windowsファイアウォールも無効にしてますし、ウィルスバスターも終了してます。 こんな現象起きている人いますか?
256 :
255 :05/01/01 09:48:09 ID:???
よく見たら「サーバーを起動し、選択した設定をインストールしています...」でした。
257 :
253 :05/01/01 20:40:08 ID:???
258 :
NAME IS NULL :05/01/05 17:19:54 ID:/Mdw8tqj
SQLSERVER2Kをインストールし、SP3aのパッチを当てようとしていますが、 セットアップ初期化エラー アクセスが拒否されました と表示され、パッチが当てられません。 なにが原因なのでしょうか?
[OSのVER]:Windows2003 [SQLServerのVER]:2000 WindowsXPのクライアントからSQLServerへODBC経由で接続し、データを取得しようと すると以下のエラーが表示されてしまいます。 [Microsoft][ODBC SQL Server Driver][SQL Server] OLE DB プロバイダ 'MSDAORA'は分散トランザクションを開始できなかったので、 要求した操作は実行されませんでした。 どのようにしたら解決できますでしょうか? どなたかご教示の程宜しくお願い致します。
>259 「Distributed Transaction Coordinator」サービスを止めていないか?
261 :
259 :05/01/05 19:51:26 ID:???
DTCは起動しているんです..
262 :
NAME IS NULL :05/01/05 20:24:02 ID:iUXMKCt8
SQLServer はOracleで言う統計情報なるものが存在しますか? と言うのは、SQLServerにインデックスを張ったのですが、 その後インデックスを有効にする処理が必要なのかなと思ったわけです。 Oracleだとコストベースオプティマイザであれば、インデックスを張った後に統計情報を取得しないと意味ないですよね。 SQLServerにも統計情報なる考え方があるのかどうか教えて下さい。 BooksOnlineではそれらしき項目が無いので、統計情報なるものは存在せず インデックスを張れば即時に効果が出るかと予想してます。
>262 あるし、BOLにも乗ってるはず。 _Wとかtとかではじまってるやつだ。sysindexesみてみよ。 ただ、oracleやdb2と違うのは自動でできること。(db2も設定すればできるけどね) 全体の数割が変更されるごとに勝手に更新されるので 自分では何もしなくて良い。結果的に >インデックスを張れば即時に効果が出る だね。 強制的に手動更新する場合は UPDATE STATISTICS
>>259 クライアント側のアプリってCOM+配下のコンポーネントってことはないですか?
COM+とSQLServerが別のサーバーの場合は特別な設定が必要になります。
265 :
259 :05/01/06 17:51:58 ID:???
クライアント側のアプリは市販パッケージソフトのため、仕様がわからないのです。 もし、おっしゃられている場合、どのような設定を行えばよいのでしょうか?
>>265 分散トランザクションつまり複数のDBサーバーにまたがるトランザクションを使用する場合、
トランザクションコーディネータ(MSDTC)配下のCOM+コンポーネントを作成する必要があります。
DBもCOM+コンポーネントも同じコンピュータにある場合は何の問題もなく稼動しますが、
別のコンピューターにある場合は通常のDBへの接続のほかにDBサーバーのMSDTCとCOM+コンポー
ネントのあるサーバーのMSDTCの間でトランザクションを制御するための通信が発生します。
その通信は標準では有効になっていません。
まず、Win2003ではネットワークDTCアクセスが標準では有効になっていないため追加でインストール
する必要があります。XPでは標準でネットワークDTCアクセスがインストールされています。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;817064 次はXP同士のケースで検証したものなので2003だと異なる箇所もあるかもしれませんが、
双方で「管理ツール」「コンポーネントサービス」「MSTDC」「セキュリティの構成」
「トランザクションマネージャ通信」で送受信とも許可にします。
「COMセキュリティ」「アクセス許可」「制限の編集」でANONYMOUS LOGON,Everyone双方に
リモートアクセス許可を与えます。(ここはもう少しよい方法があると思いますが全開にしています)
あと、WindowsXP SP2の場合は\windows\sysetm32\msdtc.exeをファイヤーウォールの例外に登録する
必要があります。
余談ですがDTC間の通信はwindows2000とXP/2003の間でセキュリティに関するモデルが異なっている
ようで、2000サーバーとXPクライアントの場合の設定は難易度高です。特にDBサーバーが2000で
ドメインサーバーを兼ねてる場合の設定はほとんど不可能と思ったほうがよいと思います。
ファイアーウォールの例外以外は特にいじってないんだけど うちのWin2000(PDCとDBサーバ兼用) にXPSP2クライアントと2003クライアントから DTC通信で分散トランザクションができてしまいます・・・
>>267 トランザクションが動いてないってことはないですか?
コンポーネントのトランザクションの設定が全部「サポート」以下の場合
明示的にトランザクションを開始してない場合はトランザクションは使われてません。
自動トランザクションで開始するなら「必要」または「新しく必要」のコンポーネント
がどこかに必要になります。
269 :
262 :05/01/07 21:00:09 ID:???
ここで聞くか、それともVS.NET関連のスレで聞くか迷ったのですが、
ここで質問させてください。
SQL Server 2000 Reporting Servicesを使用して、PDFのレポートを
表示するWebアプリケーションを作成しようと思っています。
開発はVS .NET 2003 で行っていて、ソリューションエクスプローラーの
参照設定から、Web参照の追加で、ReportingServiceへの参照設定を
しようとしたのですが
'
http://localhost/ReportServer/ReportService.asmx ' をダウンロード中にエラーが発生しました。
HTTP ステータス 400: Bad Request で要求が失敗しました。
というエラーが発生してしまい、Web参照設定ができません。
ReportingServiceをWebサービスとして利用するにあたって、なにか
設定等必要になるのでしょうか?
272 :
NAME IS NULL :05/01/12 21:15:12 ID:w3W1K1pO
SQLServer2000ってクラスタ構成にできないの? DB2で言う分散パーティションニング・フィーチャー(DPF)みたいな機能で 1つのDBを複数の筐体に拡張することはできるのかしら? SQLServer2000でも、2005でもパソコンでしか動作しないから スケーラビリティの問題をどう解決するのかな? それともOracleに載せ替えるのかな?
>272 かなりの馬鹿みたいね、こいつ 何億もするWindowsサーバ機を組んでる大企業なんてごろごろいるよ。 それもパソコンですか?
>>274 AIXやOS/390とかの世界の人なんだろう。きっと。
276 :
NAME IS NULL :05/01/12 23:24:11 ID:ujs9GoAF
今ODBC使ってるCのコード見てるんだけど、 全てのDBアクセスで、毎回select count(*)でデータ件数取ってきてから、from以下同文の本SQL発行してる 出力データ格納するのに必要な領域サイズ知るためみたいだけど… これって普通のやり方なの?できれば一回で済ませるようにしたいんですが
>>276 count(*)から次に読み込むまでの間にデータが増減しない保障はない。
月に1回くらい不思議なエラーが出るかも。でもCで配列を動的に増や
すのって面倒そう。c++ならstlの出番か。MFCのCxxArrayでもいいけど。
forward onlyでなければ最後まで読み飛ばせば全体の件数がわかるんだっけ。 それからポインタを先頭に戻して読み直せばいい。 ただし効率考えたらforward onlyで読みたいね。
VIEWに関する質問 SELECT * FROM HOGE を返すVIEWがあるんだけど HOGEテーブルの列を追加して sp_recompileをかけても 変更がVIEWの結果に反映されません 原因と解決策があれば教えてくださいマシ 今は影響する全部のVIEWに対してALTER VIEWをかけてます( Д)
sp_refreshviewっつーのは違うんかな?
>>280 おぉ!!!
こういうのがあったとは
ありがとうございます<m(__)m>
282 :
276 :05/01/13 21:10:00 ID:???
>>277 ,278
サンクス
ある程度しょーがないのか…orz
>>282 なんでもかんでもってのは変だと思う。
すべてメモリに取り込まなくても処理できるのであれば無駄だし。
最初に全部メモリを確保するんじゃなくて 10件毎とか100件毎にメモリを確保しながら 少しずつ読んで行くことはできないの?
ヽ(`Д´)ノウワァァン!!MSDE に作ったDBが2GBに達したから行の一部を別のDBにINSERTして 移した行をDELETEしたら、トランザクションログが無茶苦茶増えてディスクフルになって 元のDBがぶっ壊れた!! まあ完全/差分バックアップから復元できるわと思ったら、差分をリストアしたあとで ナズェ「容量が大きすぎて復元できんわ」という旨のログがでるのディスカーーーー!! SQL Server買えってこと、なのか?
>>285 まあまあ、Oracleだって4GBの境界でDBが
ぶっ壊れる仕様があるらしいぞ。
要はPC用RDBなど子供のオモチャということだ。
287 :
NAME IS NULL :05/01/14 07:17:50 ID:86tIXLvb
>PC用RDBなど子供のオモチャということだ。 あのー、そのオモチャを銀行で使ってるんですが...
289 :
NAME IS NULL :05/01/14 09:25:51 ID:ajTKD0DU
>>285-287 で、壊れた場合、コマンドで復旧すんだおね?
まさか、SQL鯖とか復旧不可破壊なんて存在しないおね?
290 :
NAME IS NULL :05/01/14 22:00:51 ID:86tIXLvb
>>284-286 詐欺師かおまえら。そんな煽り方やめろよ。
金も、知識もないユーザの何億円も出させて
にっちもさっちも行かなくなって泣いてるぞ。
ユーザの事を考えたことあるのか?
291 :
NAME IS NULL :05/01/14 22:06:11 ID:86tIXLvb
データセンター・サーバなんて 32bitのパソコンに32Gバイトもメモリー積んで 全く無意味だ。 買ったオレもバカだった。何億円もドブに捨てた。 オマエらサーバ作るのは金輪際やめろ。 M$のクソ社員が。
>>291 >何億円もドブに捨てた。
オマエが捨てたわけじゃなかろ
DB2でもOracleでも同じだが、メモリ量やCPU数は最後の一押しだ。 そもそもメモリが大して無くてもCPU負荷が論理的に可能な限界まで 低くなるように設計・実装して初めて意味がある。 メモリ内操作だって負荷は結構あるんだから。 何億も使う前にまずそれぐらいやるか、やってくれる人間を雇えよ。 ・・・・ということをMSは言わずに上のエディションを買わせるってのは同意だが。
チューニングとか設定とかいい加減オートにならんのかね? マシン入れたら自動的に分散して所定の設定にしたがってパフォーマンスをあげていくとか。
295 :
NAME IS NULL :05/01/14 23:14:43 ID:86tIXLvb
>>292 ボケー。オレは事業主だ。
M$の安月給サラリーマンほどが何の根拠も責任もない発言するのだ。
>86tIXLvb もともと頭が悪かったのか精神に傷を負ったのか… でもなんかワロタ
仕事でM$の営業してる人に合った事あるけど、えらく態度がでかかったな。
>>294 SQL鯖2005は大分自動化が進んだんじゃね?
少なくとも6.5とかの頃から見れば大分マシ
質問致します。。 当方winxpでMySQL4.0.22を最初に使っていたのですが ある日突然show databases;で見たら mysqlが消えていて・・・ 自分で作ったデータベースは残ってました。 それで新しくデータベースを作ろうとしてもエラーが出て 仕方なく再インストールしても相変わらず同じ状態でした。 それで調べて、まずsc.exeというツールが有って それをコマンドプロントからsc delet MySQLとしてからc:\に有ったmyも消しました。 その後、再インストールしたら起動しなくなってしまって 今は4.1.8を使ってるのですがこれも最初固まったままで 今は何故か動くには動くのですが 出来ればMySQL4.0に戻したいですけども 正しいアンインストールとうか再インストールって出来ますでしょうか? 長文申し訳御座いません。
すいませんでした。
MS SQL MYSQL にてるっちゃー似てるか
これまでも相当の誤爆があったぞ w
タイトルの付け方が悪いんだよ。 ぼったくりの方のとかいう接頭氏をいれたらどう?
普通にMicrosoft SQL Serverでいいだろ
307 :
NAME IS NULL :05/01/21 10:05:42 ID:o65aaURF
外部グローバルIPからSQLserverにADO接続を試みてるんだが、 pingは飛ぶけど(webサーバーとしては問題なく立ち上がってる) portにすら到達出来ないってのは何処の設定が間違ってるんでしょうか? (サーバー側のルータはportを開けてる)
SELECT * FROM AAA; とクエリーを実行するときに 特定の名前の項目「のみ」結果のカラムを排除したいんだけど そういうSQLの書き方教えてください。 テスト結果のデータが書き込まれるテーブルが たくさんあって(スキーマもたまに変わる)中身を比較したいんだど タイムスタンプに使用している項目だけを 結果の表から排除したいんですが。
>308 出来ない。 カラム一覧はsyscolumnsで取れるからそれ使って 動的なT-SQLをごりごり書くか、プログラム側で対処しなさい。
>307 途中の経路でブロックされていない? Portが塞がれているなんて言うのは良くある事なので。
311 :
307 :05/01/22 00:40:32 ID:???
>>310 すいません、途中の経路と言いますと何処での問題点が考えられるでしょうか・・?
win2003なのですが、正直win系のサーバーとなると尚更さっぱりです。
ちなみにサーバー内部のaccessからはSQLを拾えました。
ルータでは確かにportを開けてるのですが、外部から1433,1434に到達出来ない時点で
サーバーで何か設定する必要があるという事なのでしょうか?
SPPかなんかで外から見て本当にそのポートが開いてるのか確認すれ
ネットワーク構成書いたら?
>>311 他の人も書いているけどネットワークの経路に問題あるんじゃない?
まずはサーバから直につないで設定が間違ってないことを確認してからだけど。
slammerのパケットが未だに飛び交ってるから ISPによっては1433/1434をブロックしてる可能性はあるな。 デフォルトインスタンスだけを使うなら1433だけ開いていればいい。 しかし、セキュリティの点から言って SQLServerを直接外部に晒すのはやめといたほうがいい。 IISを噛ますとかして必要なデータだけ取れるようにしたほうがいいよ。
316 :
307 :05/01/23 07:09:22 ID:???
沢山のご返答有難う御座います。
>>312 数種類のnmapからsppまで試してみたのですが、
(ちなみにnmapは-p0オプションを付けないとブロックされてしまいました)
portがどういう状態なのかははっきりと判別出来ませんでしたが
(port1433-1434部分で非常に時間が掛かる)
存在しない=閉じられている?という結果のようです。
ネットワークの構成はルータ一台とその対象のサーバー一台(win2003,MSSQL2000)のみです。
設置して間もなく、また素人なもので他に特にややこしい事はしておりません。
>>315 やはりISP側でブロックしている可能性も考えられるのでしょうか・・?
避けたいのは重々なのですが、現状(試用段階)では複数の顧客別のデータベースを
そのサーバーに配置する方法以外に活路を見出す事が出来ませんでした。
とあるシステムの仕様がADO接続でデータベースに値を拾いにいくというものになります。
>>316 極端な言い方をすると、データベースをインターネットに直結させるのは
故意にデータ漏洩させようとしてるようなもんだ。
仕様を考えた奴に文句言ってこい。
どうしようもないのなら、サーバネットワークユーティリティと
クライアントネットワークユーティリティで1433以外のポートを使うように設定すれば
ISPのポートブロッキングは回避できるはず。
その場合にもファイヤーウォールでアクセス可能なIPアドレスを絞り込んだほうがいい。
初めてMSSQLserverを触ってみたのですが、 SQLserver認証に使うログイン名とパスワードは何処で作成出来るのでしょうか? コンピュータの管理→ローカルユーザーとグループから作成したユーザーを adminにしたのですが他に何か必要でしょうか? そのユーザーでログインしても関連付けられていないと怒られてしまいます。
>>318 select name from master..syslogins の結果を晒してみて
320 :
NAME IS NULL :05/01/31 22:46:22 ID:w5VceGKx
OS:windows2000serverSP3 SQL Server(WEB_server)SP3*2台でリプリケーション(パブリケーションの種類はトランザクション)を はっているんですがリプリケーション作成で自動に作成されるDBの容量が5ギガも食ってシステムドライブを 圧迫してしまうんですが何が原因なんでしょか・・・orz
>>320 レプリケートされたデータをずっと残すような設定にしてるとか?
どれくらい残しておくかって設定があった気がするけど、何だっけ...
322 :
320 :05/02/01 00:59:37 ID:???
>>321 回答ありがとうございます。
レプリケーションはる際は基本的にデフォルトで行いました。
レプリケートはった後にやはりログの圧縮等行った方がいいのですかね・・
323 :
NAME IS NULL :05/02/01 01:31:49 ID:45tpBUnc
int型のデータを16進数に変換するにはどうすれば良いですか?
16進数について、ちゃんと理解してから出直してくれ。
SQL Serverには、シフト演算子ってのは無いんですかね・・・
326 :
325 :05/02/03 04:29:45 ID:???
無いみたいなので結局自分で計算して終わりました。
そのうちSQLServerに均等割付ないのかとかいうやつが現れそうだな。
>>327 既に「SQL Server 2000 Reporting Services」にそういうこと言ってる人いますよw
329 :
NAME IS NULL :05/02/04 01:48:50 ID:6b5hasz0
今使用中のコネクションを調べるsp_*はないですかね。
SQLServerに縦書きは無いのですか?
>>330 あるよ。
そんなくだらないことより、文字を影付きでSELECTできないので困ってます。
誰か助けてくだちい。
>>329 sp_who activeとかじゃダメだっけ?
>>331 ちゃんとディスプレイに蛍光灯の明かり当ててる?
>>331 xmlだったら FOR XML FONT:SHADOW
オブジェクトの権限の与え方で質問があります。 USE master EXEC sp_addlogin '2ch_user', '2ch_password', '2ch' USE 2ch EXEC sp_adduser '2ch_user' USE 2ch GRANT SELECT, INSERT, UPDATE, DELETE ON 2ch TO 2ch_user 最後の GRANT 文なのですが、 2ch データベース上の全ての オブジェクトに対して、権限を与えたいのですが、 2ch.* のような指定はできないのでしょうか? (全てのテーブルやビューを列挙する必要がある?) 新規作成したユーザーに一括で権限を与える方法がありましたら 方法を教えて頂けると助かります。よろしくお願いします。
DB個々に対してそういうシステムロールがあるから、それ使えばいい。
ユーザー定義関数について質問です Create Function hoge(@str VarChar(8000)) Returns VarChar(8000) Begin Declare @buf VarChar(8000) Exec 拡張ストアード @buf, @str Return @buf End こんな関数をつくりまして、拡張ストアードは 第二引数の半角カナを全角にした文字列を第一引数に 格納してやる関数です それで Select hoge('abc'), hoge('def') というクエリを発行したところ、 abc def 返ってこなければならないのに、なぜか abc abc と返ってきてしまいました。 どうも、関数内の@bufが単一のトランザクションだと そのトランザクション内で永続(Cのstatic変数みたいに) してしまうのが原因のようなんですが、対策はありますか? カナ変換はどうしても、関数形式で行いたいのですが・・・
338 :
NAME IS NULL :05/02/12 20:18:29 ID:caNESZXy
AccessのMDBで、SQLサーバに接続するリンクテーブル を作成しています。 SQLサーバにあるテーブルのdatetime型の列をSQLで whereで条件指定するのに、どのようにSQLを書けばよいの でしょうか? where date_field > convert(datetime, '2005/02/12') ではうまくいかないようなのですが。。。 (SQLServer2000 + Access2000 です)
Accessでは日付はシャープ記号で囲むんじゃなかったっけ
>>338 where date_field > #2005/02/12#
341 :
NAME IS NULL :05/02/14 13:33:08 ID:cbuJYR/o
SQLSERVER2Kを使用していますが、 先週あたりから、DBが壊れた(?)状態になっています。 エンタープライズマネージャーでDBをみてみると、 一箇所だけ、読み込み中\未確認(だったと思う)になっていました。 お客様のPCなので、離れていてどうしようもないのですが、 対処方法となぜそうなったのか原因を教えていただけますでしょうか? よろしくお願いいたします。
342 :
NAME IS NULL :05/02/14 16:39:43 ID:dNOSGJui
会社の方針でSQLサーバー推していくことになって、Oracleから乗り換えたけど、SQLサーバーいいね。 解説書とか順序よく説明してあってわかりやすい。 まるで中身のない解説本を必死で調べてた俺がバカみたい。 圧倒的に効率がいいよ。 早く気づけばよかった。 そんなけ。
新聞休刊日でチラシが無かったのか…
344 :
NAME IS NULL :05/02/14 19:14:52 ID:INoI1MeN
MSDE2000で定期的(日に1度)にフルバックアップを取りたいのですが どんな方法があるでしょうか? OS:Windows2000Server
>>344 ファイルそのままコピー。
SQLServerならVeritusやArcServeでサービス落とさなくてもそのままバックアップ取れるけど、MSDEはどうなんだろ?
なんでバックアップソフトが出てくるのかわからん。
SQLAgentでbackup databaseすれば十分じゃね?
>>341 ディスクコントローラが死んだ時なんかでDBのファイルが完全に見えなくなるとそうなると思った
347 :
344 :05/02/14 23:35:35 ID:INoI1MeN
やりたい事をもう少し詳細に書きます。 指定したデータベースのフルバックアップを毎日決まった時間に取りたいのですが その時バックアップしてできるファイル名に日付を入れたいのです。 例えば BK20050214.dat のように 指定したフォルダに日付の違うファイルを蓄積したいのです。 これを実現するのに SQLAgentというという方法でも可能でしょうか? また他に何か良い方法はあるでしょうか? SQLAgentについては自分でも調べてみます・・・
>>347 SQLAgentでもいいし、適当なスケジュールソフトからosql.exeを叩いてこんなSQLを実行すればいい
構文の詳細はBooksOnlineで調べられる。
backup database DBNAME to disk='c:\path\dumpfile.dmp' with init
日付の生成はgetdate()とconvert()なんかを組み合わせれば何とかなるでしょ。
ジョブを組んで、ネットワークドライブに定期自動バックアップを取得したいのですが、 うまくいきません。 以下の実行が失敗します。 BACKUP DATABASE [db名] TO DISK = 'Z:\db.bak' WITH NOINIT, NAME = 'full backup', NOSKIP バックアップ先のZは、ネットワークドライブです。 Zではなくローカルディスクを指定すると、うまくいきます。 しかたがないので、一旦バックアップをローカル(例えばc:\xxx\)に保存して、 その後にバッチでネットワークドライブにcopyするジョブを組んだのですが、 これもうまくいかず。 copy c:\xxx\* Z:\ 上記コマンドも、SQL Serverエージェントによるジョブ実行ではなく、 コマンドプロンプトから直接叩けば正常に実行できるのですが……。 なにか対策はあるのでしょうか。
350 :
NAME IS NULL :05/02/16 00:37:05 ID:RxQsAWRN
PHPを使用している人、PEAR DBまったく使わないでウェブサイト作ってる人いる? 商用サイトだとPEAR使わない?
352 :
NAME IS NULL :05/02/16 15:00:04 ID:/s8eBzBZ
ユーザー関数を使用してストアド実行すると、マルチCPUでも1つのCPUしか 動かないというのは、バグ?仕様?
353 :
NAME IS NULL :05/02/16 15:00:11 ID:/s8eBzBZ
ユーザー関数を使用してストアド実行すると、マルチCPUでも1つのCPUしか 動かないというのは、バグ?仕様?
>>349 ネットワークドライブにしないでUNCにすれば?
\\servername\sharename\path\filename みたいなやつ。
>>349 ネットワークドライブってのはログインしてなきゃ使えないのは知ってるよね?
357 :
341 :05/02/21 14:06:07 ID:JC4rlMQl
>>346 お返事遅くなりました。
すみません。
ディスク上のファイルは見えていますので、
ディスクコントローラーは正常だと思われます。
本日、もう一度お客様の所に行って、
スクリーンショットやログを持ち帰ろうと思います。
かえってき次第、直ちに症状やログの詳細を細かく書かせていただきます。
SQL Server って、SELECT の WHERE句で正規表現を使った検索はできますか? MySQL や PostgreSQL みたいな感じの。
likeじゃなくて?
361 :
358 :05/02/21 23:21:04 ID:???
362 :
NAME IS NULL :05/02/22 00:16:33 ID:YP5YskFD
オープン系の業務システムでDBMSとして SQLServerを使用して大規模な業務アプリケーションを構築する計画があります。 あるテーブルのサイジングの結果、稼動後数年後に数千万〜億件クラスの テーブルになりそうな雰囲気です。 このテーブルは夜間バッチ処理でレコードが生成され、昼間オンラインによる 照会業務が発生します。 データベースの物理設計上の留意点をアドバイスいただけると助かります。 唐突ですいません。
364 :
358 :05/02/22 20:57:29 ID:???
>>363 情報 thx
2005のドキュメントも読んでみたけど、2005 でもできないっぽい
365 :
NAME IS NULL :05/02/23 14:47:29 ID:BMRNKWo4
カラムが、idとnameだけだったとして、idを主キーにしてIdentityインクリメントで連番を振った時、 INSERT時に、同時にそのとき振られた連番の数字の値を知ることは可能なのでしょうか? Webで検索してみたら、Identityの連番は振りなおす方法があるようなので、 ということは、上記の質問の内容自体が馬鹿げた考えなんでしょうか?
@@IDENTITY、SCOPE_IDENTITY、IDENT_CURRENT
367 :
365 :05/02/23 16:26:16 ID:???
できました。有難うございました。他の人のお役に立てれば・・・ string sqlStr = "INSERT INTO names (name) VALUES (@name); " + "SELECT ID = SCOPE_IDENTITY() "; <<略>> conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); id = int.Parse(dr["ID"].ToString()); conn.Close();
DBをまたいでテーブルの連結はできますか? というのはマスタ系とトランザクション系の2つのDBを考え中で トランザクションのバックアップがとりやすいかなぁって思ったんですがどうでしょ
できるけど、んな目的ならファイルグループわけりゃいいじゃん
DB分ける事を考えなきゃならん程の大規模システムなのか? バックアップがとりやすくなるかどうかも怪しいし、何より整合性が・・・
>>368 分けた方が別々にとらないかんからよけいめんどうじゃない?
372 :
368 :05/02/24 23:49:58 ID:???
ありがとうございます
>>369 >ファイルグループ 調べてみます
>>370 >大規模システムなのか?
ぜんぜん小規模です。商品マスタの例ですと1万件程度です
トランザクションも1日400件程度です
>何より整合性が・・・
いわゆる伝票、納品書、請求書処理なんですが、整合性機能?は手動でやっています
>>371 >分けた方が別々にとらないかんからよけいめんどうじゃない?
バックアップ単位がDB単位だと思ったのでマスタは登録後の1回であとはトランザクションの
履歴バックアップをしようと思いましたがやはり面倒そうですね
374 :
NAME IS NULL :05/02/26 04:40:44 ID:Wl/nL1pu
MSにとって オープンソースのメリットなんかないだろ
.NET開発環境インスト IISインスト SQLサーバーインスト&構築 で、設定終わってから気づいたのだけどインストしたドライブが FATでフォーマットされていた。。。。 これはNTFSじゃないとマトモに稼動しないのかな。。。? テーブル作成している最中ですが一応現段階で特に支障なさそうな感じです。
運用しだしたら問題だらけだろ。 今すぐ変換しろよ。
377 :
375 :05/02/26 14:00:35 ID:???
変換したよ。 したけど2Kブートできなくなっちゃった。。。泣 ntoskrnl.exe見つからないそうです。。 ぐぐってくるか他板いって来ます。。。。。。
>>374 オープンソースにするとはどこにも書かれてないが。
シェアードソースプログラムは契約した顧客にだけにソースを見せてる。
それにSQLServerを含めるかもしれないと言ってるだけ。
379 :
NAME IS NULL :05/02/26 15:28:33 ID:yssbHtOG
MS、SQL Server 2005の構成と料金体系発表
米国での料金はEnterprise Editionがプロセッサ当たり2万4999ドル/サーバ当たり1万3499ドル、
Standard Editionはプロセッサ当たり5999ドル/サーバ当たり2799ドル、
Workgroup Editionはプロセッサ当たり3899ドル/サーバ当たり739ドル。
Express EditionはMicrosoft Data Engine(MSDE) for SQL Server 2000の後継となる製品で、SQL Server 2005データベースエンジンの無償バージョンとなる。
たけ〜よ
h
ttp://headlines.yahoo.co.jp/hl?a=20050225-00000006-zdn_ep-sci
まいったなぁ。。。ちょっと誰か分かる人いないかなぁ。 IBMのServerRAID-6M Ultra320っつーサーバでSQLServer2004 Enterprize Edition で運用してるんだが、約1ヶ月ぐらいするとSQLServerが何故かサービス停止状態に なるんだよね。Web(ASP.net)+上記DBサーバって感じ。 Serverの負荷は大体90%程度で安定しちゃってる。 Web自体のアクセス数自体は1日平均80万ぐらいと大したアクセス数じゃない。 トランザクションにしても10秒間に約5千Attachぐらいで、これも大した事はない。 だけど落ちる。停止状態から開始状態にしてもWebとの関係が切れてるからWebServer も再起動しないといけない。この状態が約3ヶ月程続いてる。 客から落ちた時のクレームが余りに鬱陶しいんで改善したい。 業者も分からん分からんと・・・ どないせーと・・・
>>380 原因を分析するスキルのある人間が近くに居ないなら
ツールで解決するしかないんじゃないの。
NetIQが高負荷で落ちたSQLサーバやIISを自動的に再起動する
ソフト売ってるYO
382 :
NAME IS NULL :05/02/26 19:18:24 ID:Iv5bpOEt
SQL Server 2005のMCPはどうなるやら。
>>380 SQLServer2004って何だよ
それはいいとして、これで直るかどうかわからんけど
MSに文句つけてhotfix出してもらったら?
http://support.microsoft.com/default.aspx?scid=kb;en-us;810185 SQL Server 2000 build 8.00.0996
891268 FIX: You receive a 17883 error message and SQL Server 2000 may stop responding to other requests when you perform large in-memory sort operations
891017 FIX: SQL Server 2000 may stop responding to other requests when you perform a large deallocation operation
891201 FIX: Performance is significantly reduced when you set trace flag 9134 to prevent error message 601 in SQL Server 2000
>>381 早速みてみよう。ありがとう。
>>383 ちっと契約でDB自体へのUPDATEが私では制限されるので、今一度その情報を
交えて業者に観て貰おうと思います。どうもありがとう。
>>380 定期的に落ちるのなら落ちる前に計画的に再起動させればいいんじゃないの?
NetIQの製品のことは知らないけど
落ちたサービスを自動再起動するくらいの機能はOS標準で持ってるぞ
SQLが死んだときにSQLの再起動と同時に
iisresetコマンドを実行するように設定すればさらにベターかな
386 :
380 :05/02/27 09:39:04 ID:???
>>385 なるほど。確かにシステム的に絶対に落とせないっつー代物でもないので、
TOPPAGEにでも記載して計画的に再起動すると言う手もあるね。
但し、、、根本が解決しないと落ち着かないと言うのもある。
どうしても解決できない場合に考慮に入れてみようかなと。
ありがとう。
LAN環境で複数のPCからMSDEを利用しようとすると、 WinXP機では接続できるのに、WinMe機では接続できね〜。 何か特別な設定が必要なんだろうか・・・。
>>387 MeのMDACのバージョンがおかしいとか。
名前付きパイプでつないでる? その場合、MeからMSDE機のIPC$を見る権限が無いと繋がらないよ。
すいません。DBのリカバリについてお聞きしたいのですが、testというDBをバックアップして 復旧する場合EnterPriseマネージャからデータベースの復旧を選択すればバックアップした時点に 戻ると思うのですがOSとSQLServer2000から入れなおしたシステムに復元する場合は システムデータベース(masterやmodel)のバックアップもとっておいて復元する必要は あるのでしょうか?
サーバーにリリースする前はクライアントで開発することにして .NETからIIS、SQLとセッティングしたのです。 その後、自分の端末のCドライブがFATということに気づき 前スレでFATのままでも大丈夫か?質問したのですが。。。 パーティーションコマンダーでNTFSに変換するとbootしなく なりknoppixで他データ救出後、再インスト。 でもまたFATになってしまって(NTFSフォーマットはしてくれない) それでまた聞きたいのですがクライアント側でもやはりNTFSじゃないと だめですか? FATで開発できてもリリースの際何か障害出るでしょうか?
392 :
391 :05/02/28 19:08:35 ID:???
自己解決しました。 FAT32でも使えるらしいです。
そりゃ、FATじゃ使えないなんていう制限は無いよ。 NT系OS使うのにFAT使うのが馬鹿げてるってはなしだ。
開発環境がFATだとパーミッションの問題に気がつかない可能性はあるかも
FAT(32)とNTFSの勉強をすることを勧める。
396 :
387 :05/03/01 00:30:16 ID:???
>>388 バージョンがおかしいというと、古いってことでしょうか?
うーん、一度入れ替えてみるかな。
>>389 TCP/IPで繋ごうとしてます。
CLICONFGでTCP/IPを優先して、ポート番号もあわせてるんだけどなぁ・・・
397 :
391 :05/03/01 10:57:23 ID:???
いや、、OSインスコでFAT32がデフォになっているのです。 富士通のPCなんだけど。 WIN2Kだから特に意識してなかった。NTFSが当たり前と思ってたから。
398 :
NAME IS NULL :05/03/01 18:25:49 ID:5GDPCIsV
MSDEの再インストールがうまくいきません… saのパスワード忘れちゃったんで、再インストールが必要になったのですが、 再インストール後にログインできません。 再インストールの順序としては コンパネからMSDE削除 ↓ ProgramFilesからMicrosoftSQLServerフォルダ削除 ↓ レジストリからHLM\SOFTWARE\Microsoft\MSSQLServer以下削除 ↓ インストール(setup.exe SECURITYMODE=SQL SAPWD="sa") これでサービスからMSDE起動後に コマンドプロンプトから"osql -Usa -Psa"とするのですが、 「ユーザー’sa’はログインできませんでした」と表示されます。 "osql -E"ならログインできるのですが、saを使いたいもので… どなたか問題ご指摘して下さいませんか?OSはXPです。
>>398 Windows認証でログインできるならsysadminロールのメンバが既定のままなら
管理者権限でログインすればsaのパスワードは変更できたはずだけど
400 :
399 :05/03/01 23:04:26 ID:???
と思ったけどWindows認証じゃsp_passwordは使えないよな。 再インストール自体はREINSTALL=All REINSTALLMODE=omusを最初のインストールオプションに加えればいいけど 最初のインストール時に指定したSAPWDが判らないんじゃな…。 インスタンス名を既定から変えるのは駄目かな?
Windows認証だけにしててもsaに対するsp_passwordは有効だよ
msde2000をxp-homeにインストールして使ってますが、たまに10029最大数のdbprocessを 超えましたとエラーが出ます。 何が原因ですか?
たぶんdbprocessを使ってMSDEをたたいているアプリが原因。 クライアントソフトを作った人に聞いてみたら?
素人じみた質問で申し訳ないのですがmdfファイルをコピーして 持出されると中身見られちゃうのですがどのように対策すべきなのでしょうか?
>>405 ネットワークユーザーから見えない位置に配置する。アクセス権を設定する。
サーバーのオペレータを限定する。サーバールームへの出入りを制限する。
バックアップテープは金庫にしまう。ピンポイントで非常に大事なデータは
暗号化しておく。外注をあんまりいじめない・・などいっぱいありますね。
>>406 最後に「ウム」と大きく肯くのであった、マル。
あるソフトのテーブル定義書を見ると プライマリーキーに varchar をふんだんに使っているのですが SQL Server では、一般的なことなんでしょうか? どうせ固定長しか入っていないので char でいいと思うし、 char の方が処理が早いと思うのですが。 しかも、入っているデータは 00123 などの数値型であらわせるデータのみ なので数値型にしたほうが断然早いと思うのですが。 みなさんはどう思いますか? なにか varchar だといいことあるんでしょうか? わざわざ 1 を '00001' のようにして書き込んで '00001' で検索しないといけないし。 利点があまりないような気がするのですが。
COBOLerが作ったんじゃないのか?
設計者の趣向もありますが数量的な意味を持たない数字は文字列扱いに することは普通だと思います。 varchar, char の処理効率や格納効率は処理系によって違うのですが、 SQLServerはどうなのかな。明らかに差が出るなら使い分けるべきだろうし 差がわずかならどうでもいいやだろうし。 ただ最近の言語の文字列型は可変長文字列だから、そのままvarcharを 多用する傾向にあるようです。
MSSQLは内部処理がUNICODEだからncharやnvarcharを使うのが 速度的に有利って本で読んだ希ガス。 変換によるタイムロスが少ないとか何とか。これウソ?
同じロケールの非UNICODE文字はそのまま比較してると思ってましたがどうなんでしょう。 ANSIとUNICODEの変換が発生しても表引きでやってるでしょうから負荷は少ないのでは。 むしろロケールを意識した辞書順比較のほうに時間がかかってるように思います。 フィールドレベルで照合順序を制御できたらパフォーマンスがあがりそうですけどね。 テキスト検索でもない限りバイナリ比較で十分な気がします。
nvarcharとvarcharを混ぜこぜにして使ってると
本当はコード変換が1回で済むようなクエリだったのに
レコードの数だけ変換するようなプランになってしまって
やたらとパフォーマンスが落ちたことがある
>>412 CREATE TABLEでカラムごとにCOLLATEを設定できる。
SQL Server 2000 です。 データベースのフルバックアップを取りたいのですが、 今は、デタッチ、実ファイルをコピー、アタッチという手順を踏んでいます。 上記の場合、SQL Server に接続しているユーザーが 一人でもあると バックアップが取れません。 このあたり接続しているユーザーがいてもフルバックアップを取るなんて 事はできませんでしょうか? また、将来的には、なんらかのプログラム(C#, VB.NET)から、 上記のようなフルバックアップを取りたいと思っています。 このあたりの実装に対してキーワードなどでも結構ですので アドバイスを頂ければと思います。 よろしくお願いします。
>>414 エンタープライズマネージャかTransact-SQLのBACKUPコマンドで
オンラインのフルバックアップができます。
物理ファイル丸ごとコピーでのバックアップはあまりやりません。
>>413 なるほど、いろいろ混ぜて使ったら扱いが難しくなりそうですね。
計画的に使い分けるか、最大公約数の設定で一律に使うか悩みそう。
417 :
414 :05/03/05 20:49:15 ID:???
>>415 ありがとうございます。BACKUP コマンドでバックアップが可能な事を
確認できました。
BACKUP は接続中のユーザーがいても可能で、
RESTORE は、接続中のユーザーがいる場合は不可
という事で間違いないでしょうか?
度々すみませんがよろしくお願いします。
418 :
NAME IS NULL :05/03/06 18:20:55 ID:shHqu4v4
SQL Serverのクエリ、またはストアドを使って "AAA" "BBBBB" "CCCC" というような文字列の後ろは "AAA " "BBBBB" "CCCC " のように、一定の幅になるようにスペースで埋めたいのですが、 何か方法はありますでしょうか。
こんな感じかな。 select LEFT('AA' + SPACE(10), 10)
419 文字数で処理しているから漢字が混じったら知らんです。
>>419 おお!SPACEは知りませんでした。ありがとうございます。
俺なら convert( )で char(5)に
テーブルの Identity を設定した場合、次に割りあてられるべき値が 列のデータ型をオーバーする時、どのように処理されるのでしょうか? また、先頭へ戻って自動採番してくれるのでしょうか? それともそうならないように、なんらかの対応を行なう必要があるのでしょうか?
そのままだとオーバーフローします。 DBCC CHECKIDENT ('tablename', NORESEED) なりして調べるしかなさそう。
>>423 オーバーフローの心配をしたくないならbigintを使えば?
>>417 回答ではないですが、その質問は気になります
1 BACKUP は接続中のユーザーがいても可能で、
2 RESTORE は、接続中のユーザーがいる場合は不可
1に関してはどんな稼動状況でもうまくその時点のバックアップしてくれそうだけど
2についてはあきらかに接続ユーザに影響がでてくると思います
しかし、あれですバックアップは単純にユーザデータベースだけでいいのか素人的にすごく悩む
>>414 >>417 バックアップするときは、特別な理由が無い限りオンラインバックアップするべき。
ファイルコピー型のバックアップでは「障害直前の状態」に復旧することが出来ない。
バックアップと復旧の仕組みは少しややこしいから覚えるまでが大変なんだけどね。
RESTOREコマンドもGUIでの復旧も、接続ユーザが居る場合は不可。
だからシングルユーザモードで行う。
データベースのプロパティに[オプション]タブが有るから、そこでシングルユーザモードに
切り替えられる。
>>426 masterデータベースのバックアップは必須。
必須ではないけど、復旧にEnterpriseManagerを使う人は
msdbデータベースのバックアップがあると作業が楽になる。
tempdbのバックアップは不要。
1件消しちゃったから1件だけ元に戻してくれみたいな運用が頻発する場合 メディア障害用のバックアップのほかにbcpなどでデータを保存することはある。 この手のリカバリならオンラインでもできるちゃできる。 だれだこんなシステム作ったやつはブツブツ・・
429 :
426 :05/03/08 13:48:31 ID:???
>>427 ありがとうございます
バックアップとリストアにはEnterpriseManagerを使おうと思います
手順ですがバックアップ、リストア共に
master -> msdb -> user_dababase
の順序で操作したら間違いないでしょうか?
>> 427 横から質問ですみません。 master, msdb などバックアップをせず、user_database のみバックアップ がある状態で、user_database をリストする事はできないのでしょうか?
>>430 ユーザデータベースだけでも復旧できるよ。ただ、
masterに障害が発生するとアカウントやロールの情報が失われるから面倒なことになる。
msdbはバックアップの履歴を保持しているから、サーバ全体の障害時にmsdbとユーザデータベース
両方のバックアップが無事ならEnterpriseManagerから簡単に任意の時点への復旧ができる。
それとmsdbにはDTSやSQL Server Agentの設定など色々と保持されてる。
こんな感じのリスクや利点があるからmasterやmsdbのバックアップも行ったほうが良いよ。
>>432 勉強になりました
現在の復旧モデルは毎日完全バックアップでしたので非常に単純ですね
最新バックアップ+ログはいわゆる前進復帰って思って正しいでしょうか
ここで疑問に思ったのですが、完全バックアップをとったものが常に最新とはかぎらないですよね??
というのはトランザクションログが適用されていないない場合もあるのかな?って思ったからです
>>433 前進復帰で正しい。ロールフォワードってやつね。
「トランザクションログが未だmdfファイルに反映されていない状態」の
オンラインバックアップが心配ってこと?
確かにそういう状態でバックアップを開始してしまうこともあるだろうけど、
「バックアップが完了する直前」に「その時点で最新のトランザクションログ」を
バックアップに反映してくれる。反映したらバックアップが完了する。
だからあまり心配要らないと思うよ。
質問を勘違いしてたらスマソ
435 :
433 :05/03/08 23:54:48 ID:???
>>434 >>オンラインバックアップが心配ってこと?
>>あまり心配要らないと思うよ。
サンクスコ
納得しますた。
436 :
NAME IS NULL :05/03/09 14:46:36 ID:iwoaD9MA
全体バックアップ、前日のログバックアップとLDFログファイルがあります。 リカバリ直前にログのバックアップを取っていなかったために、 前日のログバックアップ時点までしか復旧できませんでした。 リカバリ直前のLDFログファイルは保存しているのですが、 これから当日分までの復旧をする方法はありませんか。
そのldfが全体バックアップ以降当日分までの全トランザクションログを 保持していると仮定しての話だけど、 SQLサーバのサービスを停止 ldfファイルを上書き SQLサーバを起動 (この部分でロールフォワード?) この順序でロールフォワードしてくれるんじゃないかと思う。 自信がない。ウソ言ってるかもしれんから試すなら気を付けて。
回答ありがとうございます。しかしだめでした。 ログ ファイル 'xxx.LDF' がプライマリ ファイルと一致しません。 別のデータベースのログか、以前に再構築されている可能性があります。
439 :
437 :05/03/09 18:06:59 ID:???
>>438 残念ですた。他の方法を思いついた。
まず RESTORE DATABASE DB名 WITH NORECOVERY を実行
そして
>>437 の作業を実行
エラー無しで起動出来たら RESTORE DATABASE DB名 WITH RECOVERY を実行
これも勘でしかないから気を付けて。復旧の偉い人が降臨してくれたら良いんだけどね。
440 :
NAME IS NULL :05/03/09 22:02:23 ID:1ImZYU2T
ここにmysqldumpで取ったバックアップファイルがあります。 これをリストアしようと mysql -uuser -ppass db < dumpfile.dmp したのですが、TEXTフィールドで改行が入った文字列が上手く入りません。 dumpfile.dmpを見ると「3月4日\r\n私から\r\n田中さんへ\r\n」のように改行はエスケープされています。 しかしこれをインポートしてみると「3月4日\r<改行>私から<改行>田中さんへ\r<改行>のように所々「\r」が 残ってしまいます。 MySQLのバージョンは4.0.20-logです。 よろしくお願いします。
443 :
NAME IS NULL :05/03/10 08:24:26 ID:MNpv5jzh
444 :
システムあねご ◆AJ5mpDlzVg :05/03/10 14:06:46 ID:2o+eBERu
お助け下さい。 WIndows2000 server SQL6.50を使用しています。 今朝クライアントから接続できない旨連絡を受け、サーバで確認してみると server enterprise manager上では青信号の表示なのに、右クリック→ 環境設定をクリックすると「接続が確立できませんhogeー[DB-Library]接続できません。SQL Serverが 利用できないか、存在しません。指定されたSQL Serverが見つかりません」と表示されて 接続できません。 変化点は2−3日前にuserconnection数を15から50に変更したのみ。 (変更から今日の朝までは問題なく稼動していた) イベントビューワにもエラーがなく、またサービスもMSSQLとSQLserverは起動しているようです。 なにかご存知の方、何でも結構ですので情報を・・・お願いします。
445 :
システムあねご ◆AJ5mpDlzVg :05/03/10 14:14:24 ID:2o+eBERu
ってここでよかったのかな・・・ MSSQL質問スレが見当たらなかったので質問してみたのですが・・・ すれ違いだったらごめんなさい。ちょっと追い詰められてたりします。 ウウ。
全角半角大文字小文字が入り乱れてる書き込みをする人だから 原因はどうしようもないケアレスミスなんだろうと思う とりあえずSQL Serverのエラーログも見てみたら?
447 :
システムあねご ◆AJ5mpDlzVg :05/03/10 14:48:46 ID:2o+eBERu
すいません、わりとギリギリなので>大文字小文字 エラーログは見たのですが、障害復旧?だか回復?は書いてあるのですが エラーっぽい内容がないんです・・・ でもありがとうございます、もう一度全ログ確認してみます。
448 :
システムあねご ◆P2bEA4mHeU :05/03/11 03:13:40 ID:+hn9C0uA
トリップ間違ったかな・・・ とりあえず結局復旧は無理でした・・・ 今入れなおし中・・・(´・ω・`) ショボーン
そのクライアントがSQLServerが走っているPCを認識できるのかとか、 他のクライアントではどうなのかなど、問題の切り分けをしていった方がいいんじゃないか? そんな問題じゃないのか…。
SQL65ってことはNT40ですか?懐かしい
確かMSのサポートも終わってますね
>>444 >変化点は2−3日前にuserconnection数を15から50に変更したのみ。
うる覚えなんですが、SQLServer65のライセンス形態に依存したような気が
同時接続かクライアントにライセンス持たせるだかかな?
で、同時接続の場合に接続数増やした時はNTのライセンス管理でSQLServerのライセンス数も増やさないと
そんなエラーが出た気がします
ちょっと情報が少ないのでなんともいえないんですけど
書き込みの内容から勝手に推測
クライアントの接続エラーメッセージがSQLServerから何返ってくるか(もしくは返ってこない)によるんですが、
サーバ側の接続プロトコル指定の設定とか(名前付きパルプとかTCPとかね)
認証方法の設定とか(Win認証かSQLServer認証の依存とか)
あとは、ログが一杯になると接続エラー起こしましたね
もう解決していると良いんですが
449さんが書いてるように
切り分けして情報くれるともう少しわかるかも
451 :
436 :05/03/12 09:37:12 ID:???
>>439 何度も回答ありがとうございました。
かなり裏技っぽい手順で復旧できましたのでご報告まで。
前日のログまでで復元。サービスを停止して、mdfを削除、ldfを当日ので上書き。
サービス起動して、mdfなしの障害状態でログをバックアップ。
もう一度リストア、当日分のログを含めてリカバリ。
439です。復旧できて何よりです。 手順が複雑で一見裏技っぽく思えるけど理に適ってますね。
名 前 付 き パ ル プ
名 前 付 き バ イ ブ
そのうち名前付きパイプの系統図っていうのが張られそうだ
456 :
NAME IS NULL :05/03/15 16:22:54 ID:ECAwlR0e
初心者のうえに教えてちゃんで申し訳ありません。 サーバーが立ち上がらなくなり、OS再インストールを行う ことになりました。 手元には保守計画で設定していたユーザーデータベースの バックアップ「のみ」があります。 残念ながらmasterなどのバックアップはなく、壊れたマシンか らファイルを助けることも出来ません。 この状態でOS再インストール後復元は可能でしょうか? 手元に物がなく、サーバーがある現地でいきあたりばったりで 復旧作業を行うことになってしまうので 何かアドバイスがあれば教えてください。
>>456 バックアップ履歴が失われてるからディバイスからの復元になるのかな。
手動で順番にリストア、リカバリする必要があります。
あとアカウント情報も失われてますからsa以外アクセスできない
状態になってるはずです。
458 :
456 :05/03/16 09:07:56 ID:/jDXci8u
>>457 >アカウント情報も失われてますからsa以外アクセスできない
確かにそうですね。アドバイスありがとうございます。
では復旧に行って来ます!
初歩的な質問で申し訳ないですがどなたかご教授くださいませ 既存DBの、名前を変えた複製を同一サーバ上に作りたいのですがどうすればよいでしょうか。 バックアップファイルを別名DBへ復元しようとしてみたのですがバックアップファイル中に物理ファイル名等 埋め込まれているのか元のDBへ上書きされてしまいます。
460 :
NAME IS NULL :05/03/16 11:49:43 ID:cr/mDKY6
DTSのオブジェクトのコピータスク
× 教授 ○ 教示
ushitakiうぜー
463 :
459 :05/03/16 16:35:06 ID:???
ありがとうございました。 無事複製を作ることができました。
誤字当て字誤変換は2chの華。教え示すと教え授けるだからどっちでもいいよ。 口頭で話す場合は享受と紛らわしいから教示を使うことが多いが文章なら問題ない。
m9(^Д^)プギャー
>>457 Winodws認証を使ってればsp_grantloginだけで
sysusersはそのままでもアクセスできるようになるはず
板違いだけど教授と教示では意味が違うよ。ベクトルは同じだけども。 俺も2chでなら問題ないと思うけど、他の場所では文語として用いるとしても使い分けたほうが無難。
>>467 本気で教授でも問題ないって思ってる人なんているわけないじゃないか。
漏れ思ってたyp!
ログの多重化の仕方がわかりません。ログファイルの追加はしてみましたが 領域が追加されるだけで2重化ではないようです。 あとバックアップテープ装置を2つ付けてバックアップも2重にしたいのですが 可能でしょうか。どなたかご享受くださいませ。
471 :
NAME IS NULL :05/03/17 14:54:50 ID:PRcU9wby
教授はあげれません。
472 :
てんてんだいだい :05/03/17 15:10:04 ID:XPjKNNuo
こんにちは! 初心者なのですが、、教えてほしいのです、、 セキュリティをちゃんとしてなかったのでSQLServerにユーザー"sa"は ログインできませんでしたとなり正常に起動しません。 MSのホームページで英語で回避の文章があったのですが、、、 わかりません?TCP/IP1433をつなげなくするウィルスが蔓延しているのは 後で知りました。 こんな初心者に助け舟を出してください。お願いします。
saが蹴られるだけなら、SQL Serverをインスコしたマシンのローカル管理者で入ってみたら? 入れたら原因を追及しる。
474 :
てんてんだいだい :05/03/17 16:09:12 ID:XPjKNNuo
どうすれば、、、 いいですか?ご面倒ですが、、手順を教えてください。
SQL Serverが動いてるサーバ機の前に座る。 ローカルのAdministratorsグループのメンバでWindowsにログイン。例: Administrator EnterpriseManagerを起動する。 繋ぎたいサーバのアイコンを右クリックし[SQL Server 登録プロパティの編集]をクリック [Windows 認証を使用]をチェックして[OK]をクリック 正常に繋がったら必要なデータをバックアップし、原因の特定を頑張るなり ゼロから安全な環境を整え直すなり頑張る。
476 :
NAME IS NULL :05/03/17 17:58:21 ID:WuWrTJGu
初心者で申し訳ありませんがおしえてください。 仕事場のパソコンでデータベースをVB.NETで作成していて それを家で作業しようと思い仕事場で作成した、「Microsoft SQL Serve」−「MSSQL」-「data」フォルダの中の ***.mdfファイルを家パソコンの同じ場所にコピーしたのですが、「接続できませんですた。」とエラーメッセージがでてしまいます。 なにがおかしいのでしょうか?
>>476 矜持しよう(笑)
家のパソコンにMSSQLServerはインストールしてますか?
mdfとmdlを持ってきてアタッチすればまずは動くはず。
478 :
NAME IS NULL :05/03/17 19:44:43 ID:WuWrTJGu
>>477 mdfわすれてしまいました
ありがとうございました
ldfだろ...
あれ?デタッチはしなくてもいいんだっけ?
というか、>476がアタッチの意味を理解してない希ガス
その次はアタッチしたDBにアクセスできないというお約束が待ち受けてるわけだ
サービスをとめた状態でコピーしたものはアタッチできたと思うが、ちと自信がない。
484 :
NAME IS NULL :05/03/19 14:03:05 ID:79P+2FsJ
教えて下さい。よろしくお願いします。 MSDE2000+ACCESS2000です。 開発マシンでのテストでは全く問題ないのですが 別のマシンで同じプログラム(ADE)を配布して 動作させると、パラメータ付きストアドをソースにした レポートの内容が全て”#Name?”のエラーとなります。 各クライアントで再コンパイルなどの必要があるのですか? 尚OS,AccessおよびMDACのバージョンは同じです。
>>484 SQL SERVERの問題じゃなくてACCESSの問題じゃない?
例えば、参照設定がおかしくて配布先に存在しないActiveXオブジェクトを呼び出そうとしてるとか。
486 :
484 :05/03/20 00:25:36 ID:4DI2tNZZ
>>485 ありがとうございます。
よ〜く考えるとMS-SQLのクライアント接続ツールを
何にもインストールしていませんでした。
レポート以外ADO接続だったので、気付きませんでした。
487 :
NAME IS NULL :2005/03/30(水) 09:36:35 ID:ugiFChJB
Windows2003Server にMSSQLServer2000をいれて WindowsNTから Windows認証のODBC経由でアクセスしようとするのですが 失敗指定してしまいます。 ユーザはちゃんと作成し、NTから2003の 共有フォルダ等はみえるのですが。 NTから2003への場合何か問題があるのでしょうか?
488 :
NAME IS NULL :2005/03/30(水) 10:28:09 ID:gIuAaJ+k
>>487 そのNTには SQL Server 2000 対応のMDACがインスコされてる?
MDAC 2.6 以上のバージョンがインスコされてないと繋がらないよ。
490 :
487 :2005/03/30(水) 10:47:12 ID:ugiFChJB
その他のWindows2000などからは接続できます。 MDAC のバージョンですね。確認してみます。 ありがとうございました。 報告はノチほど。
491 :
487 :2005/03/30(水) 13:04:01 ID:ugiFChJB
MDACのバージョンあげたら接続できました。 お世話がせしました。 ありがとうございました
IBM のホスト機 AS/400(iSeries Server) 上のデータベースを SQL Server に同期させようとしています。 似たようなことをしていらっしゃる方がいれば どのような手法を使っているのか参考に お聞かせ頂けませんでしょうか。 (1) リンクサーバ(IBM製 iSeries OLE DB Provider) → 試してみましたが信じられないぐらいパフォーマンスが悪いです。 (2) レプリケーション( iSeries ODBC Driver ) → Books Online によると異種サブスクライバへのレプリカは可能だが 異種DBをパブリッシャとするプル・サブスクリプションは不可能? (3) DTS ( ODBC 経由でホストDBを直叩き→ SQL Server へ変換) → リアルタイムでは同期できない。 ホスト側のスキーマオブジェクトが多く,DB構造が結構頻繁に 変わるので,そのたびにDTSパッケージを作り直すのが面倒。 (4) FTP転送してBCP →同上。更に中間ファイルと運用手間が増えそう。 ご助言いただきたくよろしくお願いします。
494 :
NAME IS NULL :2005/03/31(木) 15:22:40 ID:8EjOxO2M
SQLServer2000の見積もりが取れるサイトってどこかあります?
496 :
494 :2005/03/31(木) 16:09:52 ID:8EjOxO2M
>>495 これでOKです。
価格.COM の存在忘れてました・・・
497 :
492 :皇紀2665/04/01(金) 18:01:16 ID:???
>>493 ありがとうございます。英語版しか無いようで
ちと敷居が高そうなのと予算的にも厳しいです…
できれば標準機能で実現したいのですが
難しいでしょうか。
>>497 AS/400とMSSQLを両方使ってる人でないと答えられんから皆答えようが無いんじゃないですかね。
PASSJのメーリングリストとかで聞いてみてはどうでしょう。
サーバーにあるデータを削除しようとしたんです。 とりあえず一括削除してもいいデータだったので DELETE FROM [テーブル名] と単純にSQL打ったのですが、タイムアウトしてしまい作業できません。 そこでWHERE で条件指定して範囲を狭めたのですが。。。それでも削除できません。 もっと条件を狭めてやっと削除できたのですが、削除する条件として テーブル内データ量とDBにアクセスしている時間の関係を知りたいので 分かる方いたら教えてください。 ちなみに削除しようとしたテーブルの件数は9万件位ありました。
>>499 データ量がこれだけあるから、アクセスするのに何分かかる、ってのは
一概には言えない。サーバーの性能にもよるし。
SQLは、どこから投げたの?
クエリアナライザなら、オプション設定でクエリタイムアウトの指定ができる。
デフォルトではタイムアウトしないはず。
VB とかで、ADO 経由で投げたのなら、ADO の CommandTimeout で
クエリタイムアウトの指定ができる。
ところで、一括削除なら、TRUNCATE TABLE [テーブル名] を使えば
あっという間に終わるけど。DELETE を使う(使わなければならない)理由が
あるの?
>>499 トリガか外部キーが設定されてるんじゃないの?
結局は場合によりけりだけど、9万件の整合性チェックはそれなりに重いだろう
>>500 外部キーが設定されてるとTRUNCATE不可。
502 :
499 :2005/04/12(火) 21:15:37 ID:???
>>500 >>501 エンタープライズマネージャーでテーブルの中身確認しながら直にSQL打ってた。
本来、HOSTで作成されたマスターをFTPで受け渡ししてたもので
一ヶ月分だけSQLサーバーに持つようにしてたらしい。
そのデータは取引先の検収明細。Webで取引先が取得する様にしてる。
だから自分もテーブルの中身は当月分の内容だけだと思ってた。
ところが先月、月次締め処理の段階で500件以上行かなくなって「?」と思い
調べたら2002年からずっと累積されてて、さらにLOGもアフォみたいに
溜まってた。
どうせ当月分転送したのだけあればいいだけだからサーバー内の検収データを
一括で消そうと思ったのですよ。
削除で頭いっぱいになっちゃったんで外部キーも見てなかった。。
あとでER図と一緒にテーブルの設定みてみます。
まだそんなにSQL詳しくないから、担当らしい担当もいないので自分が
手を出すしかなくて。普段オレcobolerだし(w
かえって人の意見聞くことで自分の勉強になるからいいんだけど。
意見参考になりました。ありがとうです。
ちなみにサーバーはOS:NTでメモリ1G積んでます。
503 :
helihop :2005/04/13(水) 02:18:57 ID:xoCSgt7x
MS SQL Serverのバックアップで、、 負荷が非常に高くなるときの対処方法は、あるのでしょうか? もちろん、Serverの負荷になる処理をやめるのでしょうが 一般的には、外部バックアップソフトを利用するなど どのような方法が、効果的?一般的なのでしょうか? また、経験的に このような方法で、データベースのバックアップ負荷が サーバの負荷になりにくいように対策があれば 教えてください。 宜しくお願いします。
クエリアナライザでパスワードが不明でログインできません。 もろもろの事情で設定書等も見当たらなくて困ってます。 クエリアナライザにログインするパスワードを調べる方法はないですか?
>>502 truncate table はログ吐かないから(だから一瞬なんですけど)
バックアップ取ってからのほうがいいですよ
ログも一杯みたいだし、保険ってことで
>>503 データ量やシステムの規模、運用によって対処方法が違うと思います
その辺り詳しく
>>504 サーバ行って直接adminで入って
パスワードを新しく替えるしか無いのでは?
506 :
499 :2005/04/13(水) 10:19:18 ID:???
>>505 もちろんバックアップとってからDELETE実行しました。
で、みんなの意見聞いていろいろ調べたら
TRUNCATE TABLE はロールバックできないみたいなので
後で必要なところが出てくる場合はDELETEで実行のほうがよさそうですね。
ただ今回の自分の場合は確実に入らないものだったので。
みなさん、ご意見ありがとうです。(*^-^)ノ
507 :
499 :2005/04/13(水) 10:23:54 ID:???
ちなみに自分が行った外部研修ではTRUNCATE TABLEはなかった。 研修テキストにも入ってなかった。 ググった結果とSQL参考文献を書店立ち読み(セコイナ...オレ)で調べました。 なんにしてもみんなのヒントのおかげです。
データベースを新規作成する時に決める、 データベース名、ファイル名、場所に関してですが、 このうちファイル名というのはどこかで使われるのでしょうか? 例えばデータベース名 exdb として、ファイル名 aaaa, 場所 ccc_Data のように、設定できると思います。このファイル名が何を あらわしているのかがわかりません。 どうしてこんな質問をしているかというと、存在するデータベースEXDB1 を バックアップしてデータベースEXDB2 としてリストアした場合、 EXDB2 の物理ファイル名は EXDB2_Data とできるのですが ファイル名に該当する部分が EXDB1 のままです。このままでも 問題ないのか、もしくはファイル名を EXDB2 に変更したいのですが その変更の方法がわかりません。 よろしくお願いします。
>>508 別にファイル名はなんでも良いので、そのままでも問題ないけど。
変更したければ、以下の手順かなぁ。
1) クエリアナライザ or osql で
use msdb
go
sp_detach_db EXDB2
2) エクスプローラ等で、データベースファイル名、ログファイル名を変更
3) クエリアナライザ or osql で
use msdb
go
sp_attach_db EXDB2, '新しいデータベースファイル名', '新しいログファイル名'
新しいファイル名は、フルパスで指定すること。
>>507 > ちなみに自分が行った外部研修ではTRUNCATE TABLEはなかった。
> 研修テキストにも入ってなかった。
正規のSQLと違って
SqlServerの管理用のコマンドみたいなものだから
やらなかったんじゃないですかね〜
>>508 > データベースを新規作成する時に決める、
> データベース名、ファイル名、場所に関してですが、
> このうちファイル名というのはどこかで使われるのでしょうか?
場所はディレクトリ、ファイル名は物理ファイル名
つまり場所+ファイル名=ファイルのフルパス
(データファイルとログファイルの拡張子とかはとりあえず別として)
さっき試したけど君の書いている例の状態にならないんだが、
SQLServerのバージョンと細かいプロセスがわかる?
あとついでなんで、sp_helpfileとsp_helpdeviceの結果も答えられる範囲でよいので
でもそのままでなんか問題があるのか??
511 :
NAME IS NULL :2005/04/13(水) 11:18:51 ID:mOYD1W1W
512 :
504 :2005/04/13(水) 11:21:48 ID:???
>>505 お世話様です。Administratorでやってみます。
ええけつしとるのぉ(*´Д`)ハァハァ うはっwwwおkwww??
514 :
499 :2005/04/13(水) 12:17:00 ID:???
>>510 管理用?そうなの??
うーん、この辺りもう一度学習し直すか。。。日々精進。。。。
あと削除関連ではDROPなんてコマンドもありますね。
ちなみに昨日の削除した検収テーブルは外部keyもってました。
そうだ、削除しまくってたからまたLOGが溜まっているはずだ。
切り離し作業せねば。。。
>>514 君は触らないほうが良いよ
基本的なことだけで良いからRDBMSとSQLを学習してからのほうが廻りも君も幸せになれるよ。
今のままだと廻りも君も不幸になるのは確実だね
516 :
499 :2005/04/13(水) 13:37:00 ID:???
>>515 君になんと言われようがやる人間いないのでね。
だから勉強してるんだよ。
それとここは幸福論や精神論語るスレじゃないから。
>>514 dropじゃテーブル消えちまうよ
ログも残らない
制約取ってからデータ消すと
あとで制約貼りなおしたときに不整合起こす危険があるから気をつけて
518 :
499 :2005/04/13(水) 14:52:18 ID:???
いや削除の中には「DROP]というのもあるんだね、 という意味で書いただけだったんだけど。 どの道、ロールバックできるのはDELETEだけだし。 今回は特殊な場合だったから。 兎にも角にも皆さんお世話様でした。意見指摘大事にします。 ありがとうでした。
519 :
NAME IS NULL :2005/04/13(水) 16:08:39 ID:rPnRjdLp
2台のFailoverクラスタ上でSQL2000を動かしています。 Failover中はSQLのサービスが止まってしまいますが、それまで接続していたユーザの トランザクションは再開した後どうなるのでしょうか?
>>519 切れてロールバックされている。アプリケーションで再接続と再処理が必要。
521 :
519 :2005/04/13(水) 19:17:15 ID:dWJHcVGm
>>520 あぁ、やはりそうですか。ありがとうございました。
>>507 まずBooksOnlineで調べような
523 :
NAME IS NULL :2005/04/14(木) 10:50:29 ID:QCGB6IU8
SQLServer の1ライセンスっていくら?
>>523 バージョンとエディションによって違う
あと、クライアントライセンスなのかプロセッサなのかとかもあります
結構変動もあります
とりあえず、SQLServer2000のパッケージ市場価格を見たかったら
価格.comで見れるよ
テーブル名の先頭が #, ## ではじまるワークテーブルを作る際に、 フィールドの型にユーザー定義データ型を使う事ができないのですが、 これは何かの方法で使えるようになりますか? 現在 UDT_Code というユーザー定義データ型がある時、 ##_workTable_ とうテーブルのフィールドに UDT_Code のように データ型を設定できずに途方にくれています。 アドバイスのほどよろしくお願いします。
526 :
kazu :2005/04/14(木) 15:40:27 ID:vPYBDT4I
教えてください。 ASP上でODBCを利用して、MSSQLsvrに接続したいのですが出来ません。 命令文の例などありましたら、教えてください。
527 :
NAME IS NULL :2005/04/14(木) 16:06:10 ID:2CK0JihX
>>526 ASPってActiveServerPageのこと?
528 :
kazu :2005/04/14(木) 16:09:52 ID:vPYBDT4I
>>527 様
ASPってActiveServerPageのことです。
529 :
NAME IS NULL :2005/04/14(木) 16:12:39 ID:2CK0JihX
なんでage進行なんだ
531 :
kazu :2005/04/14(木) 17:35:06 ID:vPYBDT4I
>>529 様
OKです。出来ました。ありがとうございます。
>>525 tempdbにも同じユーザー定義データ型を作成しておく。
SQL Server 2000で暗黙の型変換をできなくするような設定ってできますか? Select * FROM テーブル Where Charのカラム=1234 みたいなクォーテーションマーク無しだとエラーで落ちるような… ご存知の方いらっしゃいましたら、お願いします。
534 :
NAME IS NULL :2005/04/18(月) 12:09:50 ID:7653fSPw
テーブルのデザインで「説明」欄に説明書いても、 SQLスクリプト生成で、説明がコメントで出力されないけど、 これは仕方がないのでしょうか
>>534 SQL拡張プロパティーも出力する、みたいなオプションチェックした?
>535 デキマシタ。アリガトウ!
537 :
SQL厨 :2005/04/18(月) 16:21:29 ID:???
厨な質問になっちゃうんですが誰か助けてくれないでしょうか。。。 Sql2000で構成されているパッケージソフトを立上中なんス。 で、レプリカしろーって言われて調べたんですが、 そのパッケージはBinaryありのnvarchar 8000桁ってのもありで、 リアルにレプリケーションできないって言われちゃったんス。 実現できる手立ては無いでしょうか。。。。 もう他の案件もありで、2徹の状態で死にそうなのでどなたかご教授下さい。。。
ユーザーの追加に関して質問です。 あるデータベース (EMDB) に全権限を持たせたユーザーを作りたいと 思っています。権限はデータベースロール内の権限で db_owner を与えれば よいのかと思っています。 そこで、EnterpriseManager の該当データベースを開き、 ユーザーの部分から新規データベースユーザーで、 ログイン名を新規を選択し SQL Server ログインのプロパティという画面で 名前 を入力し、SQL Server 認証を選択しパスワードを入力。次に、 データベースユーザーのプロパティのログイン名で、作ったユーザー名を 選択し db_owner にチェックして OK すると エラー 15023: ユーザーまたはロール "user_name' は現在のデータベースに 既に存在します。 となりユーザーの作成ができません。何がいけないのでしょうか? よろしくお願いします。
>>538 クエリアナライザで
use EMDB
go
sp_dropuser ユーザー名
go
とやってから、EnterpriseManager でユーザーを追加すれ。
540 :
NAME IS NULL :2005/04/22(金) 16:26:55 ID:VBHxbopk
トランザクションログを見ることってできないんですか?
普通は見れない気がする。 Transaction Log Explorerみたいな名前(うろおぼえ)の海外シェアウェアが有れば ログの閲覧とか好きな所からコミットとかロールバックとか出来たと思う。
右も左も分からない状態で SQL Server 関連を勉強したい場合、どちらのwebページが参考になりますでしょうか? OSは、MS Windows NT4.0 server SP6a と、Option Pack です。
>>543 素早いアドバイスありがとうございます。
早速見てみます。
知識ゼロなので、かなり時間がかかりそうですが・・・
>>544 じゃあ、セミナー(パソコン講習)行ったら?
2日〜5日ぐらいでMSSQLの基礎操作とか基本用語は身に付くと思うよ。
547 :
542 :2005/04/23(土) 15:49:17 ID:???
>>543 ,545-546
みなさん、色々とありがとうございます。
タイトルだけ見ても、期待できそうな内容ですね。
がんばります!
>>542 >OSは、MS Windows NT4.0 server SP6a と、Option Pack です。
先ずは環境を見直すべきでは。
549 :
542 :2005/04/23(土) 21:52:25 ID:???
>>548 何か問題がありますか?
今はまだ何も知らない状態なので、手元にある環境で勉強してからステップアップしようと思ったのですが・・・
>>549 今使ってるWinXPマシンで良いじゃん、と思った。
まぁ、NTの方が早いのかな。。。
>550 xpだとdevエディション、evaluationエディション、msdeしか入らんぞ 俺は別にNT4でもいいと思うが。
納品するシステムがNT4だったらまずいと思うが 勉強用なら別にいいんでないの。
553 :
542 :2005/04/24(日) 22:27:11 ID:???
お騒がせしているようですが、あくまで「初めてのSQL」なので・・・ もちろん勉強のためにです。
555 :
NAME IS NULL :2005/05/02(月) 15:20:29 ID:+9d4CVhY
どなたか経験があったり、問題分析のヒントを頂けたらと思います。。 不要なデータをいくつかのテーブルから大量に削除しました。 データボリュームは、全体で以前の7割くらいになりましたが、 それらのテーブルを検索しまくっているプログラムの実行速度が 10倍くらいになってしまいました。 トレースをみると、OPENでかなり時間がかかっています。 もちろん、統計情報は更新しています。 sp recompile とか、indexの削除、再生成など考えていますが、 効果があるかどうか、あるいは他にどんな原因が考えられるでしょうか? リリースは7.0です。 途方にくれております・・・ どなたか助言頂けると非常に嬉しいです。よろしくお願い致します。
>>555 とりあえずDBCC系のコマンドをたたいてみたらどうでしょう。
DBCC DBREINDEX
DBCC SHRINKDATABASE
DBCC CHECKDB
557 :
NAME IS NULL :2005/05/04(水) 10:58:55 ID:UY2LHSrM
>>556 ありがとうございます。やってみます。
OPENで時間がかかるようになってしまったことについては
どのような可能性が考えられるのでしょうか?
だめもとでsp_recompileすれば? 大して時間がかかるものでもないでしょ。
559 :
NAME IS NULL :2005/05/04(水) 20:45:05 ID:6TJ1D5OL
>>558 ありがとうございます。なんだかんだ言わず、トライしてみます。
SQL Server 2000 WorkgroupEditionが発売されたわけだが、EnterpriseManagerは付くのだろうか?
例えば、金額を文字列として捉えて、 select * from table where amount like '%345%'; って書くと、amount は、int32 なので like 使えないと出るんですが。 でも、金額で 345 を含むものを探したい場合ってどうすりゃいいんですか? Access だと出来たんですが、 SQL サーバーではできないんですか?
>>562 何でそんなバカ事がしたいのか、自分の間抜けさをかみしめながら400字以内でまとめよ。
564 :
562 :2005/05/07(土) 17:22:41 ID:???
>>563 金額は、あくまでも例だよ。質問の中身を伝えやすいだろ。
現に、マヌ〜な君にも理解できてるじゃないか。
で、どうすりゃいいんだか誰か教えてくれまいか?
こうみえても真面目に悩んでるんだぞ。
>>562 int32ってbigintのことを言ってるのかな?
うちでは問題なくbigintカラムでlikeは使えたけど(SQLServer2000)
ウダウダ悩むんなら、文字型に変換してやったほうが手っ取り早いかも
select * from table where convert(varchar, amount) like '%345%';
566 :
562 :2005/05/07(土) 17:33:05 ID:???
>>565 そんな呪文があったんですね。
ちゃんと動きました。ありがとうノシ
567 :
名無しさん@編集中 :2005/05/08(日) 11:41:39 ID:VS8SSSEC
学生で、ACCESSとVB.net勉強してたのだけど、 次にやるとしたらSQLserverのほうがいいのでしょうか。 ORACLEのほうが、就職には使えそうですが。インターフェースが ACCESSに慣れきってるので、MSのでとおもい、SQLserverが気になってます。
SQLServerでもORACLEでもどっちでも良いんじゃないかな。 でも値段とか考えると安いしマネージャがうまくできてるから SQLServerの方がお勧めかも。 あと、ORACLEならオラクルマスターを取るとか、 SQLServerならMCPを取るとかすると就職に有利かもね。 なんかすごいIDですね。
>>567 実力つけたいならインターフェイスがどうこうじゃなく、
DBMS自体とかDB設計とかの知識をつけた方がいい。
Oracle使おうとSQLServer使おうと、テーブル設計がクソ
なら意味無い。
570 :
名無しさん@編集中 :2005/05/08(日) 22:44:49 ID:VS8SSSEC
>568 そうですかやはりSQLserverのほうがいいですかね。 ORACLEのテキストみてたら敷居が高いように感じたものですから。 >569 そうですね、ACCESSつかっててつじつまあわせにVBAとか つかっててそれで出来たと思い込んでた節があります。 本腰入れて勉強したいとおもってました。
571 :
名無しさん@編集中 :2005/05/08(日) 22:45:36 ID:VS8SSSEC
ID確かにすごいですねw
IDに惹かれ、記念カキコ。w 今の時期は、いろんなものの入り口だけを知ってるよりも、 一つのものを深くやってたほうがいいよ。 言語特有のものって、すぐに使えなくなるけど 根本にある理論や技術は長く使えるからね。
全くの私見だが勉強するなら Oracle 実務で使うなら SQL Server だな。 PostgreSQL や DB2 なども使ったが SQL Server は便利すぎるというか簡単すぎるというか、 肝心なところや DBMS のコアを あまり意識しなくても動いてしまうから。
574 :
NAME IS NULL :2005/05/09(月) 13:23:43 ID:Kwb0grtZ
Oracleは方言がきついからSQLというかプログラミングまわりを勉強したいなら MSSQLやPostgreSQLがおすすめ。運用まわりならOracleが機能が多いからいろいろ 勉強になると思う。 あと最低必要なリソースが段違いだからデータベース専用のPCを準備できないなら Oracleはやめといたほうがいい。
勉強ならSQLServerのサブセットのMSDEがいいかと
GUIが無いから嫌でも SQLのみで操作しないといけない。 もしくはDMOツール自作するかAccessADPか
578 :
NAME IS NULL :2005/05/10(火) 19:51:40 ID:QueOigCD
今度会社の仕事でACCESSを使ってSQL SERVERのデータを参照・更新する アプリケーションを開発する様に言われました。 アクセス方法としてはADODBを使ってVBAで組む予定になっています。 VBで作るよりACCESSで作る方が楽でしょうか? ご意見よろしくお願いします。 一応いろんなサイトで現在調査しておりますがいまいちわからないのです。
使い方と規模によるかなぁ。 VBの方が完成度は高くできるけど、Accessの方が楽。
>>576 けどインストールでくじけるやつが多いんじゃないのかな。
何でインストールとかSP4のパッチ当てとかで、あんなにパラメータつけなまともに動かないんだ?
>>578 配布とかバージョンアップとか互換性とかごちゃごちゃ考えずに単に作る事だけ考えたら、Accessの方が楽。
標準でローカルにテーブル持てるからね。
各種ウィザードで連結フォームがすぐに作れる事や、 テーブルの中身をコンボボックスやリストボックスへ 表示させる時の労力の違いを体感したら、Accessのほうが早い 事が分かります。 ただし、互換性に非常に弱いので配布には向かないです。 Access2003で2000形式ファイルで作ってても、 Access2000しかない環境では動かないとかざら。
Oracleを知ってるほうがお金持ちのお客さんに近づける。 ちょっと大きな案件なら、予算に占めるライセンス料なんて誤差。 DBMSのライセンス料がはらえないような案件なら、人件費(ry
584 :
NAME IS NULL :2005/05/10(火) 23:59:32 ID:ytz9U72j
\
585 :
NAME IS NULL :2005/05/11(水) 10:52:27 ID:sgL0IKtH
>>578 です。
いろんなご意見ありがとうございます。
あまり詳しくは無いのですが、皆様がご指摘のように将来的な
拡張性等を考えるとVBで、開発コストを下げるならACCESSだと
思っています。(開発コストと言ってもACCESSの使い方に詳しくないと
あまり効果が内容に思うのですけどね。(^^;)
基本的にACCESSの使い方としてはマンマシンインターフェースとして
のみ使う予定となっておりローカルのACCESSにSQL SERVERのデータを
インポートしたりとかは現在考えて無い様です。
あくまでもSQL SERVERのデータを参照したり更新したりコントロール
したりします。
それで、ACCESSで可能(使えない事はない)という事なので開発
ツールとして使うとして、LAN上に存在するSQL SEVERへアクセス
するのであればやはりADOのオブジェクトを使った方が良いでしょうか?
それともRDOのオブジェクトを使ってアクセスする方が良いのでしょうか?
どちらも可能だと思うのですが、どちらが楽とか柔軟性があるとか
あまりわかっていません。(;^_^A アセアセ…
またご意見・ご指摘よろしくお願いします。m(_ _)m
>>585 ADOオブジェクトを選ぶべきだと思うよ。
ADOを扱うスキルがあるのならRDOを選択する理由は無いはず。
Jetへの操作が絡んでくるのならDAOで統一するのが
生産性の観点からはいいと思うけどね。
可能ならADP+SQL SERVERで生産性を最大化できると思う。
587 :
NAME IS NULL :2005/05/11(水) 13:19:50 ID:sgL0IKtH
>>578 です。
>>586 さん、早速のご意見ありがd。
データベースにあまり詳しくない(ACCESSも)のですが、一応指示された
ので調べている所です。
やはりADOを使わない理由は無いのですね。(^^ゞ
当方としては現在ACCESSのプロジェクト(ADP)でクライアント端末の
マンマシンインターフェースを作成してSQL SERVERを扱いたいと
思っていました。
ご意見から察すると、後はADOでアクセスする部分をVBAで作りこんで
いけば何とかなるのかなぁ〜と。
ADOでDBをアクセスする手法などを紹介したサイト等取りあえず調べて
みます。
MSDNライブラリみてもいまいちわかり難いので。
また、何かあればお知恵を拝借させて下さい。
本当にありがとうございました。
589 :
NAME IS NULL :2005/05/11(水) 20:43:32 ID:UfuMIuL4
pubs,Northwindのデータベースを使って 学習できるWebサイト等ありませんか?
MYSQLで、ドリームウィバーのように、コードビューをしてくれる エディタというのはあるのでしょうか?
まずはスレタイをよく読む事からはじめようぜ、な。
592 :
NAME IS NULL :2005/05/12(木) 11:38:44 ID:7g1jdXeS
クエリの実行時間を計りたいのですが、キャッシュが効いているためか 2回目以降は一瞬で終わってしまい、計ることができません。 キャッシュを消すにはどうすればいいですか。
>>592 このうちのどれか。
SQL SERVERの再起動
キャッシュのクリア。
DBCC DROPCLEANBUFFERS
キャッシュのクリア。
DBCC FREEPROCCACHE
アドホックSQLが再コンパイルされる。
594 :
NAME IS NULL :2005/05/12(木) 23:13:04 ID:heqYYx/K
>>578 です。
>>588 さん、有用な情報感謝です。m(_ _)m
まずは、教えて頂いたサイトの情報を読んでみようと思います。
さすがMSですね。(^^ゞ
読み応えありそうです。(^◇^;)
SQL SERVERをVS.NETのサーバーエクスプローラから見ると、「テーブル」、「ビュー」、「ストアードプロシジャー」しか見えない。 「データベース ダイアグラム」と「関数」が表示されないのは仕様ですか?
>>595 Enterprise Developer + SQL Server 2000 だけどダイアグラムも関数も表示されるよ。
news:microsoft.public.jp.sqlserver に投稿された関数ってどうよ。
MS SQL Serverを学ぶのに適した方法ってないですかね??
>>596 595です。
SQL Server 2000 Developer Edition SP3を使ってますが、だめです。
ちなみに MSDE2000A と共存していて、そちらは、ちゃんと表示されます。
>>600 サンクス。
アカデミックでした。納得。
603 :
NAME IS NULL :2005/05/16(月) 11:50:02 ID:WkhxTlDr
クエリアナライザに行番号を表示できなくて困ってるんですが...。。。 どなたかご存知?
>>603 "クエリ"メニュー → "結果をグリッドに表示"
605 :
NAME IS NULL :2005/05/16(月) 12:06:39 ID:WkhxTlDr
>>604 そうではなくてエディタ部分に表示したいんですが。
607 :
NAME IS NULL :2005/05/16(月) 12:50:01 ID:WkhxTlDr
608 :
NAME IS NULL :2005/05/16(月) 14:03:37 ID:8OnHDbIV
[Server] WIN2000server + Mssql2000 [client] WinXpPro + Access2000 これまで2000+Access2000でサーバーに問題なくODBC接続できていましたが WinXpのクライアントを導入したところ、最初の一回だけ接続でき、再度接続 しようとすると「SSPIコンテキストを作成できません」とエラーが出て接続 不可能に・・・・ 再起動するとまた一回だけは接続できるのですが・・・ どなたかこの現象知りませんか?
610 :
NAME IS NULL :2005/05/17(火) 09:56:36 ID:r1XHDoS9
お願いします。 いまSQLの課題に取組んでいるのですが、 担当テーブル 担当コード int 長さ 6 部署コード int 長さ 2 をVB6.0で帳票を作っているのですが帳票にだすと 本来、担当コード 0001 と 4桁でなるものが1、 部署コード 02 2桁でなるものが2にとなります。 (下図参照) これをレイアウト通りにしたいのですが方法がわかりません。 力不足かも知れませんがなにとぞご教授おねがいします。 テーブルレイアウト ______________________________ │名称 │タイプ │長さ │ =============================== │担当コード│int │6 │ │部署コード│int │2 │  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 帳票レイアウト ________________________ │担当コード│部署コード│ │======================| │0001 │01 │ │0002 │02 │ │0003 │02 │  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 今 現在 ________________________ │担当コード│部署コード│ │======================| │ 1 │ 1│ │ 2 │ 2│ │ 3 │ 2│  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
VBの話ならスレ違いな気がするけど。 ヒント:データ型とフォーマット
612 :
NAME IS NULL :2005/05/17(火) 10:36:10 ID:+IxTM017
ACCESSのプロジェクトファイルを作成する際(ウィザードの途中)に、SQL Serverで に存在するDBとの接続設定するのに鯖名、Loggin ID、PasswordとDB名を入力して [次(N)>>]ボタンを押下すると「オーバーフローしますた。」ってダイアログが 出ます。 (´ヘ`;) それも必ず・・・ ヽ(`д´;)/ うおおおお!? [キャンセル]してデータベースウィザードを中断して、自分でやると 接続ができる様なのですがSQL鯖で何か権限とか設定と変えてやらないと ダメなんでしょうか? ちなみに検証用にプログラム作って(ADODB使用)接続でき、また参照や更新・削除 ができる事を確認しております。
>>610 select right('00000'+cast(担当コード as varchar),5) from 担当テーブル
>>610 どの帳票ツールを使ってるか判らんが、たいていの帳票ツールなら
フォーマット指定できるはず。
出来ないんなら、SQLで取ってくるときにフォーマットすればよい。
ところで「課題」ってなんだ?
会社の研修課題なら、講師担当に素直に聞いた方がいいぞ。
講師とオマイの間でスキルの誤認があると後々、お互いに不幸だぞ。
>>610 int型の長さっていうのは「4」バイトで固定だよ。32bitの符号付き整数だから。
帳票レイアウトで示されてるのが正しいコードの仕様なら、
頭に0が付いててもそのまま格納されるように文字列型(ncharとか)で列を設計する。
DBから値を取り出した後0で上位桁を埋めて初めて正しいコードが完成するのは変だわね。
帳票上の表現の問題でゼロパディングする必要があるのなら、
>>613
616 :
NAME IS NULL :2005/05/17(火) 13:33:18 ID:+IxTM017
612です。 取りあえずデータベースウィザードでSQLサーバーとの接続をしなければ オーバーフローというダイアログは出ないので一旦キャンセルして プロジェクトファイルを生成しました。 その後、接続設定をしてDBへの接続確認も終わらせて完了しました。 ここからの事をここで聞くのはどうかと思ったのですが、接続した DBに対してACCESSの「デザインビューでテーブルを作成する」で テーブルを作ろうとしたんですができません。 やはりSQLサーバーマネージャーもしくはクライアントマネージャーを 使ってでないと作成できないのでしょうか? ACCESSでテーブルを作成しようとするとメッセージも何も出てこなくて 処理もされないのでどういう状態か理解できないのです。 誰かご教授下さい。
>>616 MDACのバージョンを確認してみるとか?
618 :
NAME IS NULL :2005/05/17(火) 15:18:34 ID:Ac4VR0RB
WINDOWS2003server でSQLServer7 って動きますか? 調べてみたところ、組み合わせをしている事例はあったけど、(SP4で) 「インストールできない」という報告は無かったのでできるのでしょうか。 事例というのも、あるソフトを動かすための環境一覧 みたいなものに 書いていたので実際動きましたという内容ではなかったです。
619 :
NAME IS NULL :2005/05/17(火) 16:08:46 ID:+IxTM017
>>617 >>616 です。
早速の書き込みありがとうございます。
プロジェクトファイルはADOでSQL Server上のDBへ接続しますので
DAOは使いませんのでMDACのバージョンとか関係無いかと…。
※ごめんなさい。ADO接続の話が抜けてました。(;^_^A アセアセ…
Access2000+SQL Server2000で、SQL Server2000の稼働しているPCは
占有して使うなとの命令がでているので何とかクライアントのAccess2000
上からテーブル作成等をしたいのです。
権限上の問題ならそれを回避(設定)する為の時間くらいはサーバーPCを
使わせて貰えるように言えるんですが…。
やはりクライアント側のAccess2000の「デザインビューでテーブルを作成する」
という機能を使ってできないものでしょうか?
>>619 ADOだから、MDACのバージョンが関係する。
MDACをバージョンアップして確認してみるのが手っ取り早いと思う。
SQLを使えるなら、CREATE TABLE ほにゃらら〜というテキストファイルを
作成して isql で実行する方法もあるけど。
サーバー側で実行しても大して占有することはないっしょ。
621 :
NAME IS NULL :2005/05/17(火) 17:07:31 ID:+IxTM017
>>620 >>619 です。
ありがとうございます。
試してみようと思います。
ちなみに占有とはサーバーPC端末そのものの事(他の人の開発PCなので)
をさす意味でしてなかなか触らせて貰い得ないのです。
622 :
NAME IS NULL :2005/05/17(火) 17:29:17 ID:+IxTM017
>>620 >>619 です。
インストールされているMDACバージョンをレジストリのDataAccessの
FullInstallVerを調べたところ[2.81.1117.0]となってました。
※Versionも同様です。
そして最新版を確認しようとMicrosoftのHPで探したところ
Microsoft Data Access Components 2.8 (2.80.1022.3)が最新だと
言う事になってました。(当方の方が配布されてるバージョンより新しい?)
バージョンダウンはいろんな問題があるので、他に違う方法を試すしか
なさそうです。
やはりVBAでクリエイトして試しても良いのですが、当面作るテーブルは
暫定版で都度仕様変更がおこればデザインを変えないといけないので
できればAccess2000のデザインビューで何とかしたいのですが…。
やっぱり無理でしょうか?
623 :
NAME IS NULL :2005/05/18(水) 00:21:41 ID:3fJc73+4
>>610 です
なんとか、解決できそうです。ありがとうございました。
charやtextをbcp.exeで出力するとき 裏側では一旦unicodeにしてから元の文字コードに戻してるってみんな知ってた? sqlsrv32.dllがそういう設計になってるんだけど。 それでもしすごく長い文字列があるテーブルをbcp outしようとして 文字コード変換の処理が二バイト文字の間で分断されると… ヽ(`Д´)ノ S H I T !!
何となく知ってた。bcp.exeに限らず内部処理はUnicodeだよね。
なんでわざわざnvarcharとかUnicode用の型があるのだろう?
ウニが好きだから!!
sqlserversp4どう?
630 :
NAME IS NULL :2005/05/23(月) 09:18:59 ID:OYf/q4jh
どうって言われても・・・
ウニが嫌いって言う意味?
632 :
NAME IS NULL :2005/05/23(月) 12:39:17 ID:5noSZim5
>>631 ウニ=【Uni】 code
と釣られてみた
MSDE について質問です。 ライセンスの問題ですが、 Windows 2000 Server, Windows 2003 Server に MSDE を導入した場合、 その MSDE に接続するクライアントの CAL は必要ない。 (正し、5台を超える時のパフォーマンスは落ちる) Windows 2000, Windows XP に MSDE を導入した場合、 その MSDE に他のクライアントから接続するのは OS のライセンス違反となる。 という理解で間違いないでしょうか? MSDE を使う場合でも、複数のクライアントから接続するのであれば OS が Server OS でないと、いけない、という事ですよね? よろしくお願いします。
>>633 誰か答えてくれるかもしれないけど、ライセンスについては直接MSに聞いたほうが良いよ。
>>633 細かい事は調べてみないと分からないけど、だいたいそんな感じ。
サーバ用OSとそのCALを買えっていうのが回答。
Reporting Services使ってる人いてますか? これってタックシール(宛名ラベル)打ち出したり、 1ページ内に出力するレコード数制御したりできますか? 今、クリスタルレポート使用していてReporting Servicesに 乗換えを検討しているのですが、VS.NETがまともに動く スペックのマシンがなく動作確認できず困っています。 クリスタルレポートではできるがReporting Servicesでは できないことなどあれば教えてください。
637 :
NAME IS NULL :2005/05/24(火) 10:50:49 ID:EsMZ3RTX
>>633 > MSDE について質問です。
>
> ライセンスの問題ですが、
>
> Windows 2000 Server, Windows 2003 Server に MSDE を導入した場合、
> その MSDE に接続するクライアントの CAL は必要ない。
> (正し、5台を超える時のパフォーマンスは落ちる)
>
> Windows 2000, Windows XP に MSDE を導入した場合、
> その MSDE に他のクライアントから接続するのは OS のライセンス違反となる。
>
> という理解で間違いないでしょうか?
>
> MSDE を使う場合でも、複数のクライアントから接続するのであれば
> OS が Server OS でないと、いけない、という事ですよね?
>
> よろしくお願いします。
マイクロソフトのページにうpされてましたので貼ります。
SQL Server と Microsoft SQL Server Desktop Engine (MSDE )との相互接続について
MSDE は、Microsoft Access 2000 や Office Developer Edition 2000、Visual StudioR 6.0 など、
様々なマイクロソフト製品で利用できるデータエンジンで、Microsoft SQL Server と 100 % 互換です。
MSDE は、これらの製品と連携して、あるいはスタンドアロンで用いることができ、その際 CAL は一切不要です。
また、次の環境では、SQL Server へ接続(直接または間接)するデバイスが 1 台もない場合に限り、
SQL Server CAL は必要ありません。
・クライアント デバイスから MSDE へ接続
・MSDE から MSDE へ接続
・MSDE から SQL Server Personal Edition へ接続
MSDE を使用して SQL Server のサービス (例えば、レプリケーション、データ変換サービス、
または異種分散クエリーのサービスなど) を利用する場合、MSDE を使用するデバイスには CAL が必要になります。
以上ですが、「OS」違反というのがピンときません。
XP/2KPro → XP/2KProのMSDE であればCAL不要と思うのですが・・・
もちろんOSのライセンスは必要ですが・・・
的外れでバカなことを言っていたらすみません。
ServerOSじゃないとサーバーに使っちゃダメって事だす。
>>638 > ServerOSじゃないとサーバーに使っちゃダメって事だす。
どこに書いてありますか? ライセンスに係るOSについての記述は見つかりません。
>>637 なら、極端に 100台のXP/2KPro → XP/2KProのMSDE でOSのライセンス違反でしょ。
>>640 OSのライセンスに書いてあるんじゃあるまいか?
644 :
643 :2005/05/24(火) 22:32:09 ID:???
負けた_| ̄|○
646 :
642 :2005/05/24(火) 23:15:01 ID:???
ああ、最初はapaheじゃなくてその記事探してたんだ、、、一時期あちこちで 話題になってたんで。 めもっとく。さんきゅー!
SQLServer にはオラクルのSI Object Browser 9みたいな使いやすいオブジェクトブラウザはないんでしょうか? 付属のものはどうも使い勝手が悪いので。 シェアでもかまいません。何かお勧めがあればお願い致します。
648 :
642 :2005/05/25(水) 09:27:25 ID:???
エンタープライズマネージャーが使いにくいって事?
>>647 MSのは付属のがそこそこ使えるから外部のツールはあまり見かけない。
Oracleは付属のがアレだから外部のツールがないと仕事にならないし、
サードパーティも安心して製品が出せる。まあ良し悪しだな。
>>643 じゃ、XPとか2KProのワークグループでは、
MSDEはネットワーク接続によるアクセス利用は
できないってことか
653 :
NAME IS NULL :2005/05/26(木) 03:50:03 ID:Xumyr8me
月に2〜3回のペースで、レコード追加処理で ODBCが"時間切れになりました"エラーを返し出し、 それ以降はシステムをシャットダウンするまで "時間切れ〜"状態から復帰しません。 でも、参照処理(SELECT文)は正常に行えるようです。 SQL SERVERのログを見ても、原因となるログが残ってなくって困ってます。 補足情報として、開発環境はVCのMFCを使用していて、 システム起動時にDBオープンしたままシステムを シャットダウンするまでDBをクローズしません。 クエリータイムアウトはデフォルトの15秒で、 "時間切れ〜"が発生する直前までは1秒以内に 正常処理が行われてます。 どんな内容でもかまわないので、情報の提供をお願いします。
デッドロックしてるんじゃね?
>>652 これは、WindowsプラットフォームではSQL躍進て判断でよろしいですか?
>>653 たぶんどっかでロックしてるかもね
余裕あるならプロファイラでロックとクエリー情報調査したほうがいいんじゃない?
あとシステムをシャットダウンするまで〜ってトランザクション貼りっぱなしってオチはないよね?
657 :
NAME IS NULL :2005/05/26(木) 10:43:04 ID:AsY1zCLS
スレ違いだったら申し訳ありません。 SQLServer2000をインストールする途中で全然進まなくなってしまいました。 1.インストールCDを入れる 2.画面からSQLServer2000のコンポーネントを選択 3.画面からデータベースサーバのインストールを選択 これ以降インストール画面に進まずセットアッププロセス自体も止まってしまいます。 CDに異常があるというわけでもなく困っています。 直前にやった行動はSQLServer2000クライアントをアンインストールし レジストリ等をクリーンしました。 Documents and Settingsの中等も見てみたのですが全くダメで…。 どなたか似た事例を経験した方、もしくは回避方法知ってらっしゃる方いましたら 教えて頂けないでしょうか? よろしくお願い致します。
Access + MSDE (両方ともOSはXP) で、ADO接続で 業務システム開発することになってしまいました。(TT) 下の区分に分けたときに、VBA(ADO)[クライアント側]と ストアドor関数[サーバー側]とで、パフォーマンス的に すみわけとなる基準を教えて頂けないでしょうか? ・[画面] ・[印刷] ・[内部処理]・・・バッチ更新 ※.件数は300万件〜500万件程度です よろしくお願い致します。
>>658 すみませんでした。
OSはXPProSP1です。
661 :
NAME IS NULL :2005/05/26(木) 15:07:20 ID:WsdyYV9H
>>636 漏れも知りたい。
誰か教えてくれないか age
>>661 この辺りが特徴だと思う。
・高精度の印刷が出来ない。
・バーコードの部品が無い。
・ウイザードがAccessほど充実していない。
・ユーザの操作に対する権限を柔軟に設定出来る。
ありがとう 参考になったです。
664 :
NAME IS NULL :2005/05/27(金) 16:40:27 ID:l5/VzWRA
マイクロソフト ソフトウェア製品使用許諾契約書 MICROSOFT WINDOWS 2000 PROFESSIONAL ..... 1. ライセンスの許諾。マイクロソフトは、お客様が本契約書の すべての条項を厳守することを条件として、お客様に対し以下 の権利を許諾します。 a. ..... お客様は、ファイルとプリンタの共有サービス、 インターネット インフォメーション サービス、およびリモート アクセス (接続の共有およびテレフォニー サービスを含みます) のうち 1 つ または複数の本製品のサービスを利用するため、最大 10 台の コンピュータまたはその他の電子デバイス (以下総称して「デバイ ス」といいます) から同時に本ワークステーション コンピュータに接 続することができます。接続数をプールまたは統合する「マルチ プレキシング」またはその他のソフトウェア、ハードウェアを利用す る場合であっても、間接的な接続数が上記の 10 台という制 限を越えてはならないものとします。本製品を使用して、本 ワークステーション コンピュータに格納されている他の実行可能 ソフトウェアをデバイスが使用、アクセス、表示、または実行を行 うことはできません。また、デバイスが本製品のユーザー インター フェイスを表示することもできません。ただし、上記 2 点の制限 は、デバイスが本製品の使用許諾を別途獲得している場合は 適用されません。 b. ..... c. 権利の留保。マイクロソフトは、本契約書においてお客様に 明示的に許諾されていない権利をすべて留保します。 以下略
ServerOSを買わせようとするマイ糞ソフト MSDEのページにきちんと (・∀・)カケ、バカ!
ばかだな。マイクロソフトの基本戦術をまだ理解してないね。 それじゃあ最初から使うやつが減っちゃうだろ。 最初はみなさんご自由にと使わせておいて、後からライセンス違反だと言って金をふんだくるんだよ。
667 :
NAME IS NULL :2005/05/29(日) 16:33:49 ID:mT4uUC7O
CREATE TABLE M_TR_SS( TR_CD CHAR(4) PRIMARY KEY NOT NULL, TR_SS_CD CHAR(4) PRIMARY KEY NOT NULL, D_FROM CHAR(10) NOT NULL, PRICE INT ) とやると、「テーブル 'M_TR_SS' に複数の PRIMARY KEY 制約は追加できません」。 といわれるんですが、どうしたもんでしょう?
CREATE TABLE時じゃなくて、後からALTER TABLEで設定
669 :
自己解決 :2005/05/29(日) 16:47:16 ID:???
>>667 CREATE TABLE M_TR_SS(
TR_CD CHAR(4) NOT NULL,
TR_SS_CD CHAR(4) NOT NULL,
D_FROM CHAR(10) NOT NULL,
PRICE INT
PRIMARY KEY (TR_CD,TR_SS_CD)
)
ですな
Warning: Too many connections in /home/www/html/r1/includes/lib/db_mysql.inc on line 73 Database error: pconnect(211.8.35.147, nahi, $Password) failed. MySQL Error: () Session halted.
誰かいいかげんにこのスレのタイトルを直せよ。
つ 微小軟件構造化問合言語鯖総合スレ
674 :
NAME IS NULL :2005/05/29(日) 19:14:33 ID:DsX0UAXS
セキュリティについて質問させてくだし。 混合モードとwindows認証の違いがわからないっす。 混合モードのSQLまたはwindowsってwindowsだけもできるんですかね? それだとwindowsとかわランス
>>674 books onlineに載っていたような。
まず、2つある。 ・基本認証(SQLServer認証)・・・SQLServerが独自にユーザIDとパスワードを管理する。 ・Windows認証・・・OSのアカウントを用いる(代用する)。シングルサインオンと言われるやり方ができる。 で、どっちでもいけるのが混合認証。 でもSQLServer2000からは基本認証が選べなくなって、Windows認証と混合認証だけしか選択できない。 便利そうなWindows認証だが、問題もある。 Windows認証はOSの認証サービスを使うから、SQLサーバを通じてこの機能を使うパソコンすべてにWindowsCALが必要となる。 クライアントが100台あるとして、SQLServerCALが100台分必要。これと別にWindows認証を使う場合は、WindowsCALも100台分必要となる。
678 :
NAME IS NULL :2005/05/30(月) 01:15:05 ID:JT3aRhOh
インデックスの作成についてアドバイスを戴きたいのですが、 CREATE TABLE [TABLE1] ( [a] [int] IDENTITY (1, 1) NOT NULL , [b] [int] NULL , [c] [datetime] NULL , [d] [varchar] (50) NULL , CONSTRAINT [PK_TABLE1] PRIMARY KEY CLUSTERED ( [a] ) ) テーブルの用途は日時[c]に発生したログ種類[b]のログテキストを[d]に収めるもので、 参照時には
679 :
NAME IS NULL :2005/05/30(月) 01:48:44 ID:JT3aRhOh
>678 途中で切れてしまいましたすみません。 インデックスの作成についてアドバイスを戴きたいのですが、 1) CREATE TABLE [TABLE1] ( [a] [int] IDENTITY (1, 1) NOT NULL , [b] [int] NULL , [c] [datetime] NULL , [d] [varchar] (50) NULL , CONSTRAINT [PK_TABLE1] PRIMARY KEY CLUSTERED ( [a] ) ) テーブルの用途は日時[c]に発生したログ種類[b]のログテキストを[d]に収めるもので、 参照時には select top 1 * from table1 where b=1 and c>='200x-01-01 00:000:00' and c<='200x-02-01 00:00:00' order by c desc のように参照されます。 ある同僚からクラスタードインデックスを(c)にした方がよい(パフォーマンスがあがる)とのことで、 2) CREATE TABLE [TABLE1] ( [a] [int] IDENTITY (1, 1) NOT NULL , [b] [int] NULL , [c] [datetime] NULL , [d] [varchar] (50) NULL , CONSTRAINT [PK_TABLE1] PRIMARY KEY NONCLUSTERED ([a]) ) CREATE CLUSTERD INDEX IX_TABLE1 ON TABLE1 (c) CREATE INDEX IX_TABLE1 ON TABLE1 (b) のようにしました。 確かにSELECTのパフォーマンスはあがったのですが、 個人的に非常に気持ちが悪いテーブルの設計なので, 意見が聞きたいのです。 因みにbは1から100まで 発生頻度はまちまちですが、平均で10秒で1rec位 3) CREATE TABLE [TABLE1] ( [a] [int] IDENTITY (1, 1) NOT NULL , [b] [int] NULL , [c] [datetime] NULL , [d] [varchar] (50) NULL , CONSTRAINT [PK_TABLE1] PRIMARY KEY CLUSTERED ([a]) ) CREATE INDEX IX_TABLE1 ON TABLE1 (b,c) で試してみましたが、2)の方が早いんです。 うーん、納得できない。
680 :
NAME IS NULL :2005/05/30(月) 02:11:02 ID:JT3aRhOh
ご存知の方居ませんか? テーブルにイメージを格納するフィールドが有る場合に、 レコードを削除するときのパフォーマンスで、 データベースファイルをRAIDのドライブに作成するととっても時間がかかるのですが、 何かご存知ないですか? HDベンチでは倍のパフォーマンスがあるのに、 削除時には倍の時間が掛かってしまうのです。 データベースファイルの大きさは10GBほど。 PEN4HT3GHz 2GMB SATA 80GB 7200rpm XPproにMSSQL2Kでsp3aあてたものと Xenon3GHz×2 2GMB UltraSCSI320 RAID0+1 120GB×3 7200rpm WIN2Kserver MSSQL2Kでsp3a で、HDベンチはXenonが倍、でもdeleteの時間はXenonが倍。 なんで?ッテ感じなんです。 イメージ型のフィールドが無ければXenonPCが文句無く早いのですが。
>>666 てかキミのがばかだろ?
>>665 はマーケティングのことでなくて
(それを踏まえて)不親切でずるいてキカキコがあると思われ
1レス1レスよく嫁、なw
>>679 テーブルの件数と[c][b]の統計がどうなっているのかわからんけど、
検索のSelectだけ見ると範囲指定している[c]にクラスタードするのが理想的なんで
2)のほうが早いでしょうな
あとはselect *をやめて[c][b][d]の順にインデックスしてカバリングするとか(そんかし更新系影響あるかもしれんけど)
まぁ実行プラン見ながら比較してみることですな?
>>679 「気持ち悪い」理由はなんでしょうか。「クラスタインデックスをPK以外に
設定する」ことですか? PKによる検索はほとんどの場合1件ごとになるので、
クラスタインデックスに設定するメリットはほとんどありません。なぜか
PKをクラスタインデックスに設定することを推奨していたり、PKをクラスタ
インデックスに設定するサンプルが多いですが、クラスタインデックスを
設定してメリットがあるのは、このように「特定の範囲を連続して取得する」
カラムに対してです。
SQLServer初心者です。 物理設計の中の、データベース容量(SIZE)見積りですが、 テーブルの計算式しか見つかりません。 そこで、見積りの必要なオブジェクトとその計算式を知りたいのですが どなたか教えて下さい。 あるいは出ているところを教えて下さい。 あきれてしまうような質問で申し訳ありません。 お願い致します。
Bill's penis is MICRO and SOFT !!!
>>680 単にロールバックできるようにログ残しているだけでは?
truncate tableとかdrop tableでいいなら、そっち使えば?
>>684 計算しても目安にしかならないよ。
insert/delete/updateを繰り返しているとAccessの様にどんどん容量が膨張してくる。
最適化(だっけ?)すればまた小さくなるけど。
インデックスも結構容量使う。
ver6.5の時にパフォーマンスチューニングっていう本を買ったけど、ver.2000でもSQLServerの初心者向きじゃない本か、オンラインヘルプか、MSサイトあたりを探せばあると思うけど。
>>687 極端な話が、Oracleのように、
「データベースの初期サイズ」を見積もる考えないんですか?
「テーブルの初期サイズ」だけ見積もって、後は、その合計の1,3倍くらいとか
アバウトな計算になるんですか? ぐぐってもSQLServerの見積りについて
引っ掛からないし・・・わからない
知っている方アドバイスお願いします。
>>688 期待してるようなものはないと思いますよ。
想定データの1/nと2/nの規模で実際にデータを投入してその差から
想定データの必要容量を推定するのが現実的だと思うけどな。
Oracleのだって限定された範囲の容量の計算式だから、
全体の容量を見積もるのにその値を積算するのは危険だと思う。
索引が追加になったりPICTなんたらあたりのパラメータをいじっただけで極端に変わるしね。
ただ顧客がそういう計算式を欲しがる傾向にあるのは確かなので、
差分値で見積もった後、もっともらしい計算式を作文して資料としてつけることはあるけどね。
そういえば会社の先輩が、テンポラリのデータファイルがガンガン デカくなって困るとか言ってたな 再起動すると縮小されるんだけど、みたいな
>>688 俺もOracleなら最初にきちんと計算してcreate table でアロケートする。
SQLServerはそんなこと知らないバカでも使えるという意識しかない。
実際のデータ件数に関係なく容量どんどんふくれ放題だし。
>>690 SQLServer2000では、tempdbは再起動すると一度削除されるから初期サイズに戻る。
うちのSQLServerは数ヶ月再起動せずに稼働続けていたら、tempdbががんがんふくれてGB単位になりディスク不足におちいってしまった。
それ以来定期的にtempdbを圧縮するタスク入れてる。
>>684 です。
>>687 さんはじめ、レスありがとうございます。
情報収集しまくってるんですが、データベース初期サイズの計算方法については、
進展があまりなく、
・テーブルの容量+インデックスの容量を適度(?)に膨らませたサイズ
・ログファイルについては殆ど記述無し
・その他についても記述なし
という結果です。
もう数年前ですが、Oracleの時は結構苦労して初期サイズの計算した経験があるだけに
、SQLServerの初期導入は、その殆どがアバウトなのかな?と疑問に思いました。
気持ち悪いと言えば気持ち悪いです。 自動拡張依存のような・・・
私のググり方が悪いのかも知れませんが、引き続き情報があれば頂きたく
お願い致します。
Oracle7や8の時代の「エクステントが・・」に悩まされた人たちには 自動拡張やおまかせ機能は気持ち悪いのかもしれないが、 特性を理解して使えば使いやすいから嫌がらないで使ってみなされ。 SQL Serverは監視ツールやイベントログでリソースの使用状況の監視が やりやすく構成の変更も容易にできるので、予備のディスクエリアを 準備しておいて使用状況をみて投入していく感じで使えばよい。 (もちろん事前にある程度の見積もりは必要なのだが) Oracle10gを見てるとこの手の機能が充実してきているようにも思うが どうなのだろう。
695 :
NAME IS NULL :2005/06/01(水) 14:07:22 ID:s9KvkQT9
はじめまして。 質問させて下さい。 MySqlのconcat(フィールド1,フィールド2) に相当するような関数、又は書式を教えて下さい。 select "Operating_System.OSType" & "AppsoftwareSuites.SuiteName" select "Operating_System.OSType" || "AppsoftwareSuites.SuiteName" などを試してみましたがダメでした。 queryanalyzerを使用しています。
ここは「*MS* SQL Server 総合スレ2」
"〜" てフィールド名? 文字列なら select 'Operating_System.OSType' + 'AppsoftwareSuites.SuiteName' フィールドなら select [フィールド1] + [フィールド2] MySqlのconcatって使ったこと無いので勘違いならゴメン。
>>694 >>693 です。 PASSJにも初期サイズ計算の記事がありませんでした
>>694 さんの言うとおり、テーブルとインデックスの予想サイズに上乗せしたサイズで
スタートするのがSQLServerかなという気がしてきました
自動拡張に頼ることでパフォーマンス悪くなる事があると思うんですけどね
初期サイズ計算がテーブルとインデックスだけというのは、おっしゃるように気持ち悪いですが
ないんでは仕方ありません。
アドバイスをありがたく頂いたので、それを参考にさせて頂きますね
700 :
NAME IS NULL :2005/06/01(水) 19:51:44 ID:HV/e5Aoc
>>700 レスありがとうございます。 書籍もあたって見ましたが、データベースサイズの初期計算について
掲載されていたのは、ピアソンエデュケーションの「MicrosoftSQLServer データベース管理者ガイド」
だけで、それも
・データファイル → ブロックと行桁数の関係中心
・ログファイル
について1ページ程度の簡易な解説だけでした。
データファイル・サイズの算定に関しては、テーブル・インデックス以外のオブジェクトのサイズは
考慮されていません。 (本当に情報が少ないです)
あと、必要メモリ・サイズ(キャパシティ・プランニングのガテゴリでしょうが)についても
あまり記述がありません。
要望がMSDE・SQLServerなので情報薄も仕方ないのかもしれませんが、
あとのチューニングは付いて回るものの、なんとかまともな初期導入をしたいものです。
702 :
NAME IS NULL :2005/06/02(木) 09:43:04 ID:f7QQZWCq
ADO.net⇔SQL Server この間の通信はPORT80でやってるんか? プロキシスルーもできるってことでいいんかな。
なんで80?
>>701 >テーブル・インデックス以外のオブジェクトのサイズ
懸念している(テーブル・インデックス以外の)オブジェクトと言うのは
具体的にはどういうものを想定しているのでしょうか?
BOLに記述されているデータベースサイズの見積もりでもテーブルとインデックス
のサイズのみを計算の対象としているようでした。
逆にいうと、それ以外のものではデータベースサイズに対して有意な差が出ない
と言うことではないのでしょうか。
必要メモリと言うのは、例えばテーブルサイズ・データ量から、データページを
キャッシュするのに十分なメモリサイズを算出すると言うことでしょうか。
そういう情報ということであれば、確かに見当たりませんね。
積めるだけ積んで、後は成り行きに任せるしかw
705 :
NAME IS NULL :2005/06/02(木) 11:33:12 ID:f7QQZWCq
>>703 なんかこういうのを読んでたんだけど、「.NET」って環境は全てHTTP(or SMTP)で通信してるのかな?
と思ったわけです。
↓↓↓↓↓↓
.NET対応のソフトウェアやハードウェア・デバイスは、ネットワーク(インターネット)を介して
通信し、それぞれが分散する部品の1つとして連携しながらさまざまな処理を進める。この際
の通信手段としてはWebサービス(マイクロソフトはXML Webサービスと呼んでいる)と呼ば
れるオープン・プロトコルを使う。Webサービスは、HTTP(Webページのアクセスで使用)や
SMTP(メール送信で使用)といった既存のトランポート・プロトコルを使い、そのうえでXML仕
様のデータをやり取りすることで、アプリケーション連携を可能にするものだ(詳細は後述)。
このオープンなWebサービス・プロトコルを利用したアプリケーション連携の基盤となるもの
が、マイクロソフトがWindows OS上に実装したものが.NETプラットフォームである。
で、こんなことができちゃうのかな?と
SQL Server 7.0以上
↑ ↓
プロキシ
↑ ↓
Windowsフォームアプリ(ADO.NET含む)
SQL Server 自体は.NET対応なのかよ
>>704 データベースバッファ、ログバッファの記載が見当たらないですからねw
まあ確かにディスクもメモリも安価になっているとはいうものの、
ある業務システムのハードウェア条件を、どう提示してるのかわかりません
そう考えると、その成り行き加減がOracleに勝てない理由なんですかね?
インスタンス単位の必要メモリ算出方法位、情報として出して欲しいですね
あ、あとここは、良スレですね 失礼しました
>>705 これならできるよ
SQL Server 7.0以上
↑ ↓(ポート1433)
XML Webサービス(ADO.NET含む)
↑ ↓(ポート80)
Windowsフォームアプリ
>>707 MSSQLは基本的にディスクの総容量とメモリの総容量以外ほとんど自動で
調整されて動く上、マニュアルではほとんど調整させないようになっている。
設計思想が大きく異なるためチューニング等の手法も大きく異なる。
DBMSの選択権があるのならシステムの規模や用件にあったものを選択すべきだし、
選択権がないのなら既成概念は捨ててそのDBMSとまともに向き合ったほうが良い。
純粋にMSSQLの容量見積やチューニングについて語りたいならいいが、
Oracleとの比較をやりたいのならこっちのスレに移動しないか。
Oracle>>>>>>SQLServer
http://pc8.2ch.net/test/read.cgi/db/1057151330/l50
712 :
707 :2005/06/02(木) 15:37:25 ID:???
>>707 さんはじめ、レスして頂いた方ありがとうございました。
一言弁解させて下さい。
SQLServerに対して批判している訳ではありません。
また、Oracleと比較してるわけでもありません。
自分の場合、Oracleしか経験していなかったので、SQLServerの初期容量(ディスク、メモリ等)の
見積もりや計算方法が、情報が少なくてわからないという素朴な疑問から始まったものです。
まあ、イラつきは正直ありましたが(汗
このスレや他のHPのみなさんのおかげで考え方がだいぶわかってきました。
このスレ含めて、インターネット上に初期サイズについてのトピが非常に少ないというのは
私が「気にしないでいいようなこと」を聞いたのか、「本来重視すべきトピ」なのかは
疑問に思います。
713 :
707 :2005/06/02(木) 15:38:38 ID:???
トピ・・・
715 :
NAME IS NULL :2005/06/03(金) 10:02:07 ID:EjOlD3De
tempdbをバックアップする方法ってあるのでしょうか? 本来必要の無い行為ですが、監視Toolがアホで全DB についてバックアップの有無を定期的に報告してきてし まうのです。
>>715 ・監視対象外にする
・監視ツールの報告を止める
・監視ツールからの報告を無視する
自動圧縮オプションってつけてますか?
718 :
NAME IS NULL :2005/06/06(月) 15:11:37 ID:K1uL96CQ
質問です。 作成したDTSパッケージのみを客先に持っていきたいのですが、 DTSパッケージのみをエクスポート・インポートするにはどうすれば良いですか?
>>718 DTSパッケージの実体はmsdbデータベースのsysdtspackagesテーブルの各行だったと思う
720 :
初心者 :2005/06/06(月) 20:42:22 ID:HNNBGjbm
突然申し訳ございません。SQL初心者です。 何気なく使用していたのですが、いつのまにかデータベースに共有のマークがついてしまいました。 原因がわからず、あれこれと設定を変えているのですが共有マークがはずれません。 ご存知の方教えていただけませんでしょうか。よろしくお願いします。
721 :
NAME IS NULL :2005/06/06(月) 21:19:10 ID:gU+b6aWh
>>720 共有マークというのがよくわからないのですが、
*.mdbなどがあるディレクトリがフォルダ共有になったということですか?
723 :
初心者 :2005/06/07(火) 10:11:23 ID:0SItwb8W
Enterprise Managerを立ち上げてデータベースフォルダの中を見ると、 円柱状のアイコンというかマークがありますよね。 それに共有の『手』のマークがついてしまったんです。 うーん、どうしてかしら?
どうしてかしらね。 どこか他のサーバと同期してるんじゃない?
レプリケーションで、パブリッシャーに設定するとそのマークが付く。 パブリケーションデータベースから除外すれば消える。 テーブルだけ除外しても消えないので注意。
726 :
初心者 :2005/06/07(火) 16:33:03 ID:0SItwb8W
会社のSQLサーバーのバックアップデータ&テーブルを 自前のPCに移植するため今自前PCにて復元かけています。 しかし、復元が途中で止まってしまう。これいったいなに??? テーブル数は36項目。 うちユーザー作成16項目。 ひとつのテーブルは20件前後のデータあり。 テストデータなので少ないのですが。。 何度やっても途中で止まる。 要因これってのが判らない。。エロイ人教えて
>>727 バックアップなんて面倒なことせず、バイナリそのままコピーして持っていってアタッチするほうが楽。
>>729 1.SQL鯖のサービスをとめて、該当するDBのMDF・LDFファイルをコピー
2.自前のPCに1のコピーをペーストしてsp_attach_db実行
詳しくはBooksOnlineを「アタッチ」で検索してくらさい。
>>730 ああ、やはしMDFファイルでしたか。。。
実はさっき削除して再度CRT TABELを実行して、もう一度復元したら
できました。
結局原因がなんなのかわかりません。。。
でもせっかくなので
>>730 氏の方法も試したいので
自前PC内テーブルは破棄。ただいままっさら。
明日会社のSQLサーバーより再度MDF等のファイルをコピーして
やってみます。ひとつ勉強になった。感謝です。
732 :
731 :2005/06/08(水) 23:09:47 ID:???
>>730 今しがた、コピーしたファイルをフォルダに格納。
亜タッチ完了。終了しました。
たしかにこの方が楽です。
いろいろありがとうでした。
ごめ。ちょこっと質問 SQLServer6.5 + ODBC + Access2000だとDBから引っ張ってきた日本語が化ける んだけど、これって ・SQLServer6.5は日本語が内部unicodeじゃない ・Access2000はunicodeしか扱えない のが原因ということであってる?解決法は ・Access2KをあきらめてAccess97?にする ・SQLServerを6.5→2KにVerUp しかないんでしょうか?
追補 SQLServer用ODBCドライバが2.xだと文字化けせず、3.xや2000.xだと文字化け。 ググってみたけど、ver3.7以降かそれより前かでunicode化されてるかどうか違う みたいなのでやっぱunicodeがうまく扱えてないのが原因ぽいんだけど。 でも普通に考えると、新しいODBCドライバのほうが SJIS? ----> ODBCドライバがコード変換 ----> unicode -> MSAccess てなりそうなもんなんだけど????
内部的にUnicode使っているのと、クライアントからアクセスしたときにUnicodeで出すかどうかは別だと思うけどねえ。 単にAccess2000の表示フォントの問題とかじゃないの? nvarcharとかならどうだか知らないけど。
736 :
NAME IS NULL :2005/06/10(金) 09:34:04 ID:9ugW0i++
レプリケーションするとのサービスアカウントにはドメインアカウントでないと だめっぽいのですが、ということは同一ドメイン内でないとレプリケーション できないということでしょうか?ログ配布なら違うドメインでもOKですよね?
737 :
NAME IS NULL :2005/06/10(金) 09:35:05 ID:9ugW0i++
なんか日本語変ですねorz
738 :
NAME IS NULL :2005/06/10(金) 12:00:13 ID:9ugW0i++
なんだか出きそうですね。お騒がせしました
739 :
ミ・Д・彡Delフサ :2005/06/11(土) 01:25:35 ID:d74B+wNz
すまそん、客先です....
どなたか、
>>5 の状態、での
普通のBAKファイルとTRNファイルとの
組み合わせでのリストア方法を教えていただけないでしょうか?
ちょっちまぢまぢに
おながいします。
....こんな時間に.....orz
>>739 俺は初心者だからワカラナイヨー
がんばれ!
がんばれ!
>>739 リストア前にまだバックアップされてないログをバックアップする必要がある。
データベース本体のファイル(MDF)が壊れてる場合もログだけのバックアップは可能。
うまくログをバックアップできない場合は、Enterprise Managerを一度終了させてから
操作するとよい。それでもうまくいかない場合は、直接SQLでBACKUP LOGコマンドを
NO_TRUNCATEオプションで実行する。
742 :
ミ・Д・彡Delフサ :2005/06/11(土) 02:26:07 ID:d74B+wNz
超超、最新にならなくても、いいんだ。 とりあえず、 BAK1 TRN1 TRN2 …省略… TRN24 BAK2 TRN25 TRN26 TRN27 あと、無し とファイルがあったとして、 @BAK2をNoRecovery オプションで復元 ATRN25/TRN26をNoRecovery オプションで復元 BTRN27をRecovery オプションで復元 したら、それでよさそうかとおもうんだが、 @はうまくやれるんだけど Aのやりかたがわかんなくて、普通に追加でリストアしようと EntMgrで操作しても --------------------------- Microsoft SQL-DMO (ODBC SQLState: 42000) --------------------------- The backup set in file 'C:\Program Files\…省略…_tlog_200506110010.TRN' was created by BACKUP LOG and cannot be used for this restore operation. RESTORE DATABASE is terminating abnormally. --------------------------- OK ってエラーがでるんだよぉ。。。。(ToT) すごーく、逝きそうです。 パーティーは自社3人+DELL社1人....
743 :
ミ・Д・彡Delフサ :2005/06/11(土) 02:31:03 ID:d74B+wNz
すまそ、エラーメッセが英語なのは SQL鯖2K英語版だからす... 漏れと同僚は、NorecoveryオプソでのTRNの 復元方法がわからないのです。たぶん操作が間違っているんですあ いつもは、BAKファイルからの普通のRecoveryオプションでの復元しか やらないので.... このパーティーは全滅かしら...
エンタープライズマネージャで操作するなら、 BAK2を復元「デバイスから」、データベース全体、復旧完了状態「データベースを操作不可状態」 途中のログは復元「デバイスから」、トランザクションログ、復旧完了状態「データベースを操作不可状態」 最後のログは復元「デバイスから」、トランザクションログ、復旧完了状態「データベースを操作可能状態」 でいける気がするのですが。
RESTORE DATABASE is terminating abnormally. ということはもしかして ログに対してRESTORE DATABASEコマンドを使ってませんか? 投入順序は次のとおりのはず RESTORE DATABASE ... WITH NORECOVERY RESTORE LOG ... WITH NORECOVERY RESTORE LOG ... WITH RECOVERY
746 :
ミ・Д・彡Delフサ :2005/06/11(土) 03:35:21 ID:d74B+wNz
な、、、なんとかできそうっす、、、、 トランザクションログ復元指定をしてなかったっす。。。 あと、テストしたファイルも破損してたらしい、、 (・_・)(._.)ありがとうございます。 もう少しだ。ほんちゃん環境で戦ってみます...
748 :
NAME IS NULL :2005/06/11(土) 21:51:25 ID:FxunfU63
自宅でSQLの勉強をしたいので、SQL2005ExpressをローカルのPCにインストールしてみました。 SQLサーバ2000のEnterprise Managerからアクセスしようとしたら、接続が確立 できませんでした、といわれ、途方にくれています。 インストール時には混合認証にして、SAパスワードも設定しました。 インスタンスは既定ので、もうひとつはなんだったか不確かですが、そのまま次へ をクリックしました。 どうすればEMからアクセスできるようになるのでしょうか? あと2005は画面右下にアイコンが表示されませんよね?
∧,,∧ ありがとうごzました ミ,,゚Д゚彡 ミ つ旦)~~ 〜と,,,~),,~) 無事、おうちにたどりつきました。 とても勉強になりました。感謝です。
>>748 俺も試してみたけどEnterprise ManagerではSQLServer2005には
接続できないようです。
旧バージョンのEnterprise Managerはサポートしてないのでは。
そこでSQLServer2005に接続するための代案です。
1.Express Managerをダウンロードして使用する。
2.SQL Server 2005 Workgroup Editionをインストールして
Management Studioを使用する。
しかし、SQLの勉強をするならSQLServer2000を使った方がよいと思います。
自宅で使うならMSDE、SQLServer2000評価版、Developer Edition
のいずれかを使うとよいです。
SQL Server 2000 です。 Windows 2003 Server のうえで動かしており、そのネットワークでは、 ドメインではなくワークグループとなっています。 この時、ネットワーク上の PC から Windows 認証の設定で、ODBC の設定をして SQL Server へアクセスしようとするとアクセスができません。 ワークグループで Windows 認証を使用する時は、何か設定しなければ ならないのでしょうか? アドバイス頂けますと幸いです。
>>752 クライアントのWindowsアカウントがサーバにも存在するのか、
そのアカウントで認証出来るようにSQL Serverが正しく構成されているのかを確認すれ
754 :
NAME IS NULL :2005/06/13(月) 19:35:21 ID:jyI5ErP7
サーバ側カーソル定義して、ループ内で一行ずつFETCHするストアド プロシージャを考えているのですが、クエリアナライザで実行すると、 それぞれのFETCHがひとつの結果として返ってきます。 クライアントプログラムの都合上、それをひとつのクエリに対する結果 として見せたいのですが、なにかやり方はありますでしょうか?
>>754 ループの中で一時テーブルにINSERTして、終わったら一気にSELECT
>>751 > 俺も試してみたけどEnterprise ManagerではSQLServer2005には
> 接続できないようです。
> 旧バージョンのEnterprise Managerはサポートしてないのでは。
またですか。SQLServer6.5=>7.0の時もそうでしたね。
いいかげんにしてほしいなあ。
757 :
NAME IS NULL :2005/06/13(月) 22:15:11 ID:jyI5ErP7
>>755 どもです。
INSERTで日が暮れてしまいそうで。その方法以外の方法を探していた
ところなんです orz
なぜExpressなど使うか。 June CTPがタダで置いてあるじゃないか。 Enterprise Editionもゲットできるぞ? 一年後に起動できなくなるそうだが・・・
>>757 実際試してみて日が暮れたの?
一時テーブルでやってみてそれでも遅いのならtempdbがちっこいせいかもしれない。
一度tempdbの容量を大きくしてやってミソ。
>>757 INSERTより一行ずつFETCHする方に時間がかかってるんじゃないかな。
対抗馬でtempdbの復旧モデルをシンプル以外に変えてるとか。
大穴でtempdbじゃなく普通のテーブルをワークにしてるとか。
>>759 すみませんでした。実際にやってみます。1000万行↑の一時テーブル・・・怖いな・・
>>756 内部構造が大きく変わってるだろうから仕方ないんじゃないの?
下手に旧版から接続できるようにして変な動作されるよりいいと思うが。
>>761 1000万行のサーバサイドカーソルってメモリが足りなくなるんじゃね?
ほんとにカーソルを使わなきゃ出来ない処理なのかどうか考えてみたら。
764 :
NAME IS NULL :2005/06/14(火) 12:04:26 ID:Ff0KhJX0
>751 ありがとうございます。 どうしようもないのでMSDE2000を使いました。たしかDevエディションって有料ですよね? ExpressManager とEnterpriseManagerを混存させたくなかったので、とりあえずこのままいきます。
765 :
NAME IS NULL :2005/06/14(火) 12:05:06 ID:FN/Zifsa
SQL Server2000 Developer Editionを購入したのですが、 中に ・SQL Server 2000 Developer Edtion(64bit) ・SQL Server 2000 Developer Edtion 開発用およびテスト用限定版 が入っていたのですが、どちらをインストールすればよいのかわかりません。 違いを教えていただけませんか? 一応開発用のテスト環境にいれるのですが、64bitの方が基本ぽい気がしたもので・・
767 :
765 :2005/06/14(火) 13:48:56 ID:FN/Zifsa
>>766 わからないです。
DELL PowerEdge800です。
どこをみればのっているのでしょうか?
>>767 PowerEdge800はPentium2,Celeronって事なので
64bitじゃない方で良いと思いますよ。
769 :
765 :2005/06/14(火) 14:04:46 ID:FN/Zifsa
わかりましたー ありがとうございました^^
770 :
NAME IS NULL :2005/06/14(火) 17:16:09 ID:fp/EkyCo
コマンドラインですべてのテーブルの.sqlファイルを出力するには どうしたらよいでしょうか。
>>770 静的にやりたいんか動的にやりたいんかわからんし、
どのレベルまで再現できたらいいのかが分からんのでヒントだけ。
EnterpriseManagerを立ち上げてテーブルの「SQLスクリプトの作成」を実行する様子を
SQLプロファイラでトレースしてみると、どうやればスクリプトが作れるかわかるよ。
>>763 ストリーム処理をDBでどれくらいできるのか、というある意味
ベンチマーク的な感じで取り組んでいますので、ビジネス用途で・・
ってんじゃないですよ^^。ダメだったらダメって事で・・でも
ダメかどうかがわからないので、試してたりしますw
集計関数って自分で作れますか?たとえば 1 | ば 2 | あ 1 | か 2 | ほ とあったら SELECT 数字,連結(文字) FROM table GROUP BY 数字 1 | ばか 2 | あほ を作りたいんです。 1 | かば 2 | ほあ になってもかまわないんですが、そんな関数を作りたいんです。
2005で作れます
MySQLしか知識が無いのですが、先日からSQLServerをやりはじめました。 質問なのですが、MySQLなどでは、SELECTするときにLIMITを使用して 件数を指定してレコードが取得できますが、 SQLServerではどのようにするのでしょうか?
先頭からの件数だけでよければTOPで。
>>776 先頭からというのはSQLServerのマニュアルで探せたのですが、
n件目から指定件数という場合はどうするのでしょうか?
そういう指定を直接する方法はない。 工夫してなんとかするしかない。
以前こんなのを書いた事はあるぞ select distinct TOP 20 KEY,DATA1 from TABLE as TBL1 WHERE DATA2 LIKE '%hoge%' and not exists (select * from ( select distinct TOP 100 KEY,DATA1 from TABLE as TBL1 WHERE DATA2 LIKE '%hoge%' ORDER BY DATA1,KEY ) as TMPTBL where TMPTBL.KEY = TBL1.KEY) ORDER BY DATA1,KEY 101件目から20件分出るものだった気がする
781 :
NAME IS NULL :2005/06/16(木) 19:47:25 ID:S8DRQ4qp
バックアップジョブがたまにコケるんですが、なにか原因として考えられることってあるでしょうか?
>>781 DATとかへのバックアップは相性が悪いとこけるぞ
783 :
NAME IS NULL :2005/06/16(木) 22:18:27 ID:J+Ztoauc
うちの会社 sql sv2kで給与やら営業支援やら動かしているんだが sp4あてるべきか sp3のときはsql スラマーがでてあてざる終えんかったが
>>784 なんか別のトラブル(MOM関係)もあるらしいから、
sp4aがでる鴨試練という噂
>>780 こうしたほうが速いんでない?
select * from (
select distinct TOP 20 KEY,DATA1
from (
select distinct TOP 120 KEY,DATA1 from TABLE as TBL1 WHERE DATA2 LIKE '%hoge%'
ORDER BY DATA1,KEY
) as TBL1
order by DATA1,KEY desc) t
order by DATA1,KEY
780の方が速いよ
788 :
NAME IS NULL :2005/06/17(金) 01:55:55 ID:A+zflxre
100万件目から20件とかだと786の方が速いのかな?
789 :
718 :2005/06/17(金) 12:24:37 ID:???
どういたしまして
>>786 だとサブクエリの部分で一時的な結果セットが発生してしまうので
行が増えるにしたがって重くなるんじゃないかなあ…
>>780 はexistsを使ってるので途中で結果セットが発生しない
速さは一概には判断できないが、少なくとも処理に必要なサーバリソースは
>>780 の方が少ないと思う
>>791 >>786 も一応exists型に変換できるが、ネストがかなり深くなるな(汗
どっちにしろ、いろいろパターンがあるから、
データとかインデックスの持ち方とか検索パターンとかで変わる可能性あるから
結局のところは全部ためせってこったな(汗
793 :
NAME IS NULL :2005/06/19(日) 22:49:54 ID:swxdw9ff
唐突なんですが、相談にのってください。 日々発生する売上情報を使用して処理するトランザクション(ストアドで作成) があるのですが、通常は5分程度で完了するものが、ある日突然1時間経過 しても終わらない状況となっています。 tempdbを異常なくらい使用していて(100G超)、データファイルの自動拡張が できずに異常終了したこともあります。 どんな原因が考えられるでしょうか?
デッドロックとか?
>>775 >>780 >>786 こんなのどう?
DECLARE @min_key int; --←キーの型
DECLARE myCursor CURSOR FOR
SELECT TOP 100 KEY FROM table
ORDER BY KEY
FETCH NEXT FROM myCursor
INTO @min_key
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM myCursor
INTO @min_key
END
SELECT TOP 20 * FROM table
WHERE KEY >= @min_key
CLOSE myCursor
DEALLOCATE myCursor
これで、100件目から20件分でるんじゃないかな?計算量2nで。
どんな順序付けで20件だかわからんから使えるシチュエーション限られるが・・・。
796 :
795 :2005/06/20(月) 02:56:15 ID:???
>>795 ・・間抜けなことした。ループ無しで良いね。
DECLARE @min_key int; --←キーの型
DECLARE myCursor CURSOR FOR
SELECT TOP 100 KEY FROM table
ORDER BY KEY
FETCH LAST FROM myCursor
INTO @min_key
SELECT TOP 20 * FROM table
WHERE KEY >= @min_key
CLOSE myCursor
DEALLOCATE myCursor
お世話になります、突然申し訳有りません。
http://www.sqlpassj.org/bbs/bbs_disp.aspx?forum_id=1¤t_page=1&disp_mode=2&detail_mode=1&message_id=2259 ↑この記事を参考にしてSQLServer2000のアクセスログを監査しようとしてます。
SQL Serverは毎週月曜日朝に起動、毎週金曜日夕方にサービス停止後サーバ機を停止しています。
なので月曜朝に
osql /E /i "c:\auto.sql" /n (上記URLでの例)
を手動で叩く運用を考えています。
ここで1つ問題が有ります。
上記URLのページで言うところの吐き出す監査ログ「c:\kekka.trc」が既に存在している場合、
osql /E /i "c:\auto.sql" /n がエラーで停止してしまう様なのです。
-----
【ログが無い場合(正常終了)】
C:\>osql /E /i "c:\auto.sql" /n
TraceID
-----------
1
(1 件処理されました)
-----
-----
【[ログが既に存在する場合(異常終了)】
C:\>osql /E /i "c:\auto.sql" /n
ErrorCode
-----------
12
(1 件処理されました)
-----
なので吐き出すログが既に存在する場合は手動で退避させて「osql /E /i "c:\auto.sql" /n」を
起動させなければならない状況なのでチョトダサイので、ファイル名を「osql /E /i "c:\auto.sql" /n」を
叩いた時間(例:c:\kekka_200506201130.trc)にしたいのですけど、osqlでファイル名をコントロール
出来ますでしょうか?
出来ない場合は「c:\kekka.trc」のリネームと「osql /E /i "c:\auto.sql" /n」を含んだバッチファイルを
書けばいいかなぁと思うんですけど、もっとカッコイイ運用をされていらっしゃる方は居らっしゃいますでしょうか。
#蛇足ですけど参照記事で
#「 SELECT * FROM :: fn_trace_getinfo(default) 」と書いてある部分は
#「 SELECT traceid FROM :: fn_trace_getinfo(default) 」の方がいい様な気がします。
>>793 そのストアドがバカな設計じゃなければいいんだけどね。
とりあえず、ストアドの中身をトレースしてみたら?
インデックスとかデータ件数とか処理時間とかを気にしながら。
799 :
NAME IS NULL :2005/06/27(月) 09:34:16 ID:dqw5VFWT
セキュリティ面なのですが、コピーした(された)MDFファイルを ほかのコンピュータのSQL Serverでアタッチできないようにするには どうすればよいのでしょうか? (パスワードを設定してアタッチするにはパスワードが必要など可能でしょうか?)
>>799 そもそも、MDFをコピーできる時点でセキュリティ面でアウトだと思うが。
>>800 に同意だが
どうしてもってならもう内部のデータ全部暗号化でどうだ。
デコード処理通さないとわけわかめにしとけ。
まあプライマリキーぐらいそのままでもいいと思うが。
住所とかIDとかPASSとTELとか名前とかそんなのを暗号化して格納しとけば
例えデータが漏洩しても大丈夫だ。
まあまたくもって現実的な話ではないが。
格納と表示の度にプログラムでエンコ・デコード処理通すのもな・・・
selectにトリガを仕掛けておいて別サーバだったら全テーブルtruncateとかw
>>802 リバースエンジニアリングしようとすると自己破壊するハードウェアみたいなもんやね。
804 :
799 :2005/06/28(火) 09:40:26 ID:???
>>800 社内のシステム担当だと可能なんですよ。
そしてMSDEなんか簡単に手に入るんで自分の
スタンドアロン環境で簡単にアタッチなど...
>>801 そうですよね。重要データを暗号化すればと思うのですが、
参照・保存でその都度、複合・暗号ってのも...
標準機能で付いてれば嬉しいんですが。
>>802 なるほど、見られる前に自動消去させるってことですね。
どんな動作になるかちょっと試してみようかなぁ...
お三方ありがとうございます。また何かいい方法があったらお願いします。
> 社内のシステム担当だと可能なんですよ。 と言うのをナントカ出来ないのかな? 実機は隔離してDBのアカウントだけ発行するとか って、まぁそれが難しいんだとは思うけど。。。
SQL Server 2005 日本語版は、何月ごろに製品版がリリースされる予定か ご存知でしたら教えてください。
>>804 =799
MDFファイルを2G超に膨らましておけば
MSDEではアタッチできないぞ。
でもBCPされたらそこまでだけどな。
つか、システム担当の権限はどこまでよ?
>>808 Books Onlineの
- SQL Serverのインストール
-- SQL Server 2000 へのアップグレード:概要
--- 旧バージョンとの互換性
---- SQL Server 2000 と SQL Server Version 7.0
>ROW_NUMBER関数 ほんとにようやくって感じだな……
>>811 -Transact-SQL リファレンス
--Transact-SQLの新しい機能
ってとこで見つかりました。ありがとうー
---
ROW_NUMBERが有れば随分レスの有った
>>775 も簡単にできそうだね。
セキュリティの観点からSP3a+MS03-031よりもSP4を宛てた方がいい理由ってなにかあるでしょうか?
SQL2003をインストしたときに設定したパスワードが不明で SQLサーバー認証のログインが出来ません。 レジストリに書き込まれていると思うのですが どこに記述あるんでしょうか?教えてください。
ローカルアドミン権限をもつWindows認証アカウントでログオンしてから 該当アカウントのパスワードを変更するというのは?
817 :
815 :2005/06/30(木) 12:22:03 ID:???
>>816 そんな権限のあるアカウントは持っていません。
他人がインストしたSQLサーバーを勝手に使いたいのです。
>>817 ちょっとワロタw
システム管理者に相談してくださいw
>>815 みたいな人間に勝手に使われないようにシステム管理者が日々苦悩してるってのになw
ここがシス管スレだったら
>>815 は十字砲火にあってるなw
>>815 お前の望むように勝手に使えたら重大なセキュリティホールだね^^
というかお前という奴が重大なセキュリティホールだね^^
というか死ね^^
システム管理者以外がサーバー触りくまっている
>>820 の
会社もスゲーと思うけどなw
レベル低っ!
saパス無しのところもまだまだたくさんありますぜ。
>815 そのバージョンのSQLServerキホン
レジストリにはパスワードなんて書いてないよ レジストリって平文同然だし
すぐ分かるパスワードなんてパスワードの意味ないしな
ユーザ名:sa パスワード:無し これ最強
829 :
815 :2005/07/01(金) 09:38:38 ID:???
システム管理者の名前と誕生日を入れたらログインできました。ありがとう。
オチはもうちょっと捻って欲しかった
女の子の名前とかね。
パスワードに僕の下の名前を入れたらログインできました 愛されてるみたいです とか。
システム管理者に肉棒を入れてみたら、パスワード吐きました
うちの会社のsaアカウントパスワードは iloveyou
scott/tiger
>>835 止めとけ、SQL Serverがクラッシュするぞ。
837 :
NAME IS NULL :2005/07/05(火) 18:48:49 ID:cbZxJwk5
教えてください。 拡張子「BAK」のついたデータをいきなり渡されました。 聞けば、「MS SQL Server」のデータだと言ってます。 このデータから、復元ってできるものなのでしょうか? 差分バックアップデータではなさそうなのですが。
>>837 それが完全バックアップを含んでるなら可能。
復元されるデータファイルのはバックアップ時の位置に作られるので
ドライブレターなどの構成をあわせる必要あり。
sa以外のユーザーを使ってたらDB内のユーザーとログインIDの関連付けも必要になる。
データの受け渡しにバックアップイメージを渡すのはスマートじゃないと思うが、
ネットで接続できない場合ほかに適当な手段がないのでわりと使われてる。
839 :
NAME IS NULL :2005/07/05(火) 21:50:06 ID:UHwt9kL+
偶然にも便乗質問のようになりますが、 DTSパッケージのサンプルということで、 拡張子がdtsのバイナリファイルを貰いました。 EnterpriseManagerではインポートできないと思うのですが・・・ ググッたところ、DTSデザイナというものが存在するようですが、 当方のSQLServer2000のDeveloper版には無いような・・・ インストール時のオプションで選択しないと駄目なのでしょうか?
>>838 ありがとうございました! 無事復元させることができました。
>>839 1) Enterprise Managerのツリービューの"データ変換サービス"で右クリックして"パッケージを開く"を選択
2) もらった dts ファイルを選択
3) パッケージデザイナ画面が開いて、dts ファイルの内容が表示されるので
"パッケージ"→"名前を付けて保存"を選択
5. 場所コンボボックスを"SQL Server"に変更して、サーバー、ユーザー名、パスワードを
入力して"OK"クリック
842 :
839 :2005/07/05(火) 22:18:02 ID:???
>>841 どうも有り難うございます。
四苦八苦していたところでした。
本当にどうも有り難うございました。
>>843 ( ´д)ヒソ(´д`)ヒソ(д` )
スコッとタイガーっ!! ってなんかのキャッチコピーみたいですね。
ぼらくる
848 :
NAME IS NULL :2005/07/13(水) 10:31:59 ID:cwIOx3kC
会社のネットワークで、 SQL2000サーバーに各端末から.MDBでデータ処理しています。 テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、 競合で変更が更新されないことがあります。もちろん競合はない筈でも、この メッセージがでて変更ができないことがあります。 この不具合の原因について、教えていただけないでしょうか。
18 名前:NAME IS NULL[] 投稿日:2005/07/12(火) 22:11:06 ID:bmQRX1mO 会社のネットワークで、 SQL2000サーバーに各端末から.MDBでデータ処理しています。 テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、 競合で変更が更新されないことがあります。もちろん競合はない筈でも、この メッセージがでて変更ができないことがあります。 この不具合の原因について、分る方いっらしゃいますでしょうか。
937 名前:NAME IS NULL[sage] 投稿日:2005/07/13(水) 10:33:46 ID:??? 会社のネットワークで、 SQL2000サーバーに各端末から.MDBでデータ処理しています。 テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、 競合で変更が更新されないことがあります。もちろん競合はない筈でも、この メッセージがでて変更ができないことがあります。 この不具合の原因について、教えていただけないでしょうか。 マルチしすぎ死ね
とにかく教えてくれよ、>850以外の方
852 :
NAME IS NULL :2005/07/13(水) 12:18:50 ID:Kkt8JXUa
>>851 お前が調べた事を書いてくれ。
話しは、それからだ。
>>851 どんな情報が必要なの。
マルチ扱いされているが、質問レスに書いた通りだが。
フォームからやテーブルを直接開いてレコードに修正加えて保存しようとしても、
データの競合で変更できないんです。
会社のネットワークで、 SQL2000サーバーに各端末から.MDBでデータ処理しています。 テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、 競合で変更が更新されないことがあります。もちろん競合はない筈でも、この メッセージがでて変更ができないことがあります。 この不具合の原因について、教えていただけないでしょうか。
会社のネットワークで、 SQL2000サーバーに各端末から.MDBでデータ処理しています。 テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、 競合で変更が更新されないことがあります。もちろん競合はない筈でも、この メッセージがでて変更ができないことがあります。 この不具合の原因について、教えていただけないでしょうか。 マルチしすぎ死ね
だめだこりゃ。やっぱここの住人は癖がありすぎだ。
会社のネットワークで、 SQL2000サーバーに各端末から.MDBでデータ処理しています。 テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、 競合で変更が更新されないことがあります。もちろん競合はない筈でも、この メッセージがでて変更ができないことがあります。 この不具合の原因について、教えていただけないでしょうか。
∧ ∧ ┌───────── ( ´ー`) < シラネーヨ \ < └───/|──── \.\______// \ / ∪∪ ̄∪∪
久々に見た
プロファイラ使え… ヒントがなさ過ぎる。
861 :
NAME IS NULL :2005/07/13(水) 22:57:50 ID:UXfmrCnT
すみませんが 主キー/オートナンバー型のフィールドを1から戻すにはどうしたら良いのでしょうか? テーブル自体作り直すしかないのでしょうか?
>>861 データを全部消しても良いならTRUNCATE
>>861 BooksOnlineでDBCCとIDENTITYの呪文を唱えながら、探してみてください。
864 :
861 :2005/07/13(水) 23:39:03 ID:UXfmrCnT
自己レスです。
とりあえず今触ってたら一度データを全削除しオートナンバーを解除してテーブル保存。
再度オートナンバーにしたら直りました。
>>862 ,863
TRUNCATEもDBCCもよくわかりませんので調べてみたいと思います。
ありがとうございました。
TRUNCATEも知らんうちから2chに出入りするのは その場しのぎの断片的な方法しか得られず 百害あって一利なしだぞ。 まずBooksOnlineを読め。 それが難しすぎるというんだったらおとなしくまず 参考書の一冊でも買ってきてそれを読んでから来い。
866 :
ISNULL( NAME,'初心者' ) :2005/07/17(日) 01:59:03 ID:I4aojghx
クエリアナライザで LEFT OUTER JOINを使用するSQLだと待機状態になり結果が返ってくるまで かなりの時間がかかるのですが(結合条件は間違ってはいないと思います・・)、 UNIONを使用すると1分ほどで結果を得られます・・・ UNIONのほうが処理としては早いのでしょうか?
>>866 LEFT OUTER JOINをUNIONで代用できるのか?
条件にもよるから、どんなSQLを実行したのかUPしないとなんともいえない。
インデックス無し疑惑の臭いがプンプンするぜ…
869 :
NAME IS NULL :2005/07/20(水) 20:13:31 ID:c8nDa3oN
2ch初心者なので不備があるかもしれませんが、教えて下さい。 知りたいのはSQL-DMOなのですが(このスレでいいのでしょうか?)SQL-Server7.0時代では ちゃんと動作していたアプリがSQL-Server2000にアップした所動かなくなってしまいました。 DMOのヘルプも参照したのですが 何分英語なのと 何が変わった?かが掴めず Methodも存在しているようでエラーは返ってこないのですが 取得される値がおかしいのです。 取得したい値はユーザー毎のPermissionでListUserPermissionsよりGetCountしてそれぞれの Permissionを取得しているのですが、特定のユーザーに「SELECT,INSERT」の権限を設定しても GetCountで1しか返してきません。権限の内容を取得すると「SELECT」でした。データベースへ直接 ストアド(sp_helprotect)で調べるとちゃんと「SELECT,INSERT」も許可されています。 一体何が原因なのでしょう?心当たりがある方いらっしゃいませんか?
最近、タスクマネージャでsqlserv.exeのメモリ使用量が400メガくらいとデカい。 数週間前までは30〜80メガくらいしかいかなかったのですが。 レコードを追加してるのでもなく、サービスを開始してると次第に上がっていく感じです。 何か、疑うとこあるでしょうか? Sql2000+sp2です。
>>871 「感じ」じゃ分からんだろうからシステムモニタを使って監視してみたら。
すみません質問です。 sqlldrでcsvファイルを読み込んでいるのですが、 csvファイルが「A,B,C,D,E」となっていて 対象テーブルは「C,D」しか項目が無いのです。 どのようにctlを記述すれば良いのでしょうか。 csvファイルを変更するっていうのは仕様的に駄目みたいです。 検索しても、sqlldrについては大抵基本形しか載ってないので よくわかりませんでした。 教えてください。宜しく御願いします。
Oracle? SQLLDRってSQLServerにもあった?
876 :
873 :2005/07/21(木) 14:24:37 ID:???
>874 ありがとうございます。 でも、このツールでは基本形しか作成してくれません。 (テーブル項目を記述して、その通りにctlファイルを作成するだけっぽい) >875 ありがとうございます。 オラクルに逝ってきます。
877 :
NAME IS NULL :2005/07/21(木) 18:17:44 ID:RfIxcPDr
SQLServer8?のデータベース1個を丸ごとMSDE(SQLServer7?)環境に お互いのマシンは通信できる環境にないので、 SQLスクリプトかダンプファイルを出力するなどして 移行したいのですが、可能でしょうか? 試しにSQLスクリプトを吐き出させたのですが、MSDEの方で走らせるとエラーが 出てしまいます。。 Oracleは経験あるのですが、SQLServerは長所新車です。。。 よろしくお願いいたします。
> 試しにSQLスクリプトを吐き出させたのですが、MSDEの方で走らせるとエラーが > 出てしまいます。。 どんなテーブルを作成しようとしてどんなエラーが出田野出消化。 経験者なら経験者らしい質問をしようぜベイビー。
879 :
877 :2005/07/21(木) 18:53:27 ID:RfIxcPDr
すみません。 適当にやってたらなんとか関数以外は全部コピーできました。 でもSQLServer7には関数がないらしいですね! 関数を呼び出すプログラムの部分は全て書き直さなければいけないんでしょうか。。。 値を返すストアドとか作れるのでしょうか?
880 :
877 :2005/07/21(木) 19:42:51 ID:RfIxcPDr
あ、returnでできました。どうもおさわがせしました。
MSDE1.0なんか持ち出してくるから苦労するんじゃないの。 なんでMSDE2000を使わないんだ?
ALTER TABLE で、列を追加する場合に、任意の位置に列を追加する方法 はありませんか? ALTER TABLE table1 ADD col1 integer のようにやると、当然ながらテーブルの末尾に追加されてしまいます。 任意の位置に列を追加する方法があれば教えてください。 よろしくお願いします。
883 :
NAME IS NULL :2005/07/22(金) 16:40:24 ID:B8s/LCPu
SQL Serverのデータ分析および作成したレポートの共有を行いたい のですが、どのような方法があるのでしょうか。 Excel Add-in for Analysis Servicesはクライアント機能のみで レポート共有は出来ないと思われます。 Microsoft以外の他社製BIツールを使わずに実現する方法について アドバイスもしくはヒントを頂ければありがたいです。
>>882 ALTER TABLEではムリ。テーブルを再作成するしかない。
EnterpriseManagerを使えば可能(これも内部でテーブルを再作成している)
>>883 Visual Studioで開発したレポートをReporting Servicesの標準機能で共有。
またはWindows Sharepoint ServicesのBI用Webパーツを使う。とか。
886 :
NAME IS NULL :2005/07/22(金) 22:53:35 ID:V0HvoT84
どなたかsqlの実装の仕方教えてください
実装ってDBMSをつくるのか?PostgreSQLのソースでも見ろ。
SQLServerで backup database データベースファイル名 to disk = `c:¥backup¥aaa.dat` with init ってスクリプトでDATファイルを取ったんですよ でもね、これからMDFとかLDFとか復旧させる方法がわからないんですよ。 おしえて、エロイ人!
RESTORE FILELISTONLY FROM DISK = 'C:\xxxxx.dat' で情報がとれないっす、たすけて、エロイ人!
Enterprise Managerでバックアップからのリストアとかしてはどうか。
893 :
NAME IS NULL :2005/07/23(土) 12:48:28 ID:d4eNuGOv
http://www.itmedia.co.jp/enterprise/articles/0507/20/news062.html MS、SQL ServerとVisual Studio新版に合わせた新認定プログラムを計画
Microsoftは認定資格試験のプログラムを改変する。
現在の技術者中心のプログラムから、より一般的なものに変わる予定。(IDG)
米Microsoftは11月に予定されているSQL Server 2005とVisual Studio 2005のリリースに合わせて認定プログラムの変更を準備中だ。
ミネアポリスで開催されたWorldwide Partner Conferenceで、Microsoft Learningグループのマネジャーが、
デベロッパーおよびデータベースエンジニア向け認定プログラムの変更について述べ、
技術者中心の認定プログラムから、より一般的な認定プログラムに変わる予定だと語った。
Microsoftは9月に試験の名称を公表し、新しい認定のための準備ガイドとアップグレードパスに関する情報をリリースする予定。
SQL Server 2005とVisual Studio 2005が一般発売されればパートナーと顧客は準備を始めることができる、とバルバーノ氏は付け加えた。
これどうよ。
>>893 資格取得者向けにMSDN特別割引制度とかアフィリエイトプログラムでもあれば考えてやってもいいが。
895 :
NAME IS NULL :2005/07/23(土) 18:29:38 ID:YLKzAIbs
>>894 ですから資格としてどうなのかなあって事ですので
取りたきゃ取ればいいんじゃん それを評価する立場の人間はこんなスレにはこないだろう
そういう話じゃなくて 取って意味があるのかどうか、みたいな話では。 と、MCPか何か取らないと来年も昇級なしですよ、と言われた漏れは思っています。
意味があるかどうかはそれぞれの環境次第じゃねえの。
だから上の人間が資格を重要視するような環境ならば取ればいいじゃん、って事でしょ うちみたいな、資格を取ろうと結局年功序列な環境では取るだけ金が勿体無い。 つかベンダー資格は全般的に高すぎだよなぁ
意図せず900げと
901 :
NAME IS NULL :2005/07/24(日) 09:57:19 ID:U5TivVQp
SQL Server Certified Technology Specialistsは データベース管理者、 データベース開発者、 ビジネスインテリジェンス開発者 としての認定を得ることができる。 あとはMCAやDB/2エンジニアのような初級基礎レベルのMCPがあるのかどうか。
902 :
NAME IS NULL :2005/07/25(月) 14:19:01 ID:TRMXkurN
>>902 助けてやるからストアドって何なのか説明よろ
904 :
902 :2005/07/25(月) 14:34:22 ID:TRMXkurN
ストアド=ストアドプロシージャー ↑って共通語じゃなかったんだ_| ̄|○ ごみん。
いや、それは知っているけど、単にストアドプロシージャがよく分からないだけ。
907 :
NAME IS NULL :2005/07/25(月) 15:09:26 ID:dGM+1vOZ
SQL Server2000使ってます。 あるDBに存在する全ての表の行数を一発で取得できる様な物(ストアドプロシージャとか)は標準では無いのでしょうか。 select name from sysobjects where xtype='U' group by name order by 1 で取ってきたテーブル名の一覧をfetchで select count(*) 行数 from [テーブル名] に突っ込んで行こうと頑張ってみたんですけど、エラーで動きません。 (構文が判ってなかったりします…内容は次の発言で。)
908 :
907 :2005/07/25(月) 15:09:42 ID:dGM+1vOZ
Create Procedure PR_user_tables AS drop table user_tables; create table user_tables (テーブル名 varchar(128),行数 int); Declare @ChvTable varchar(128) Declare @CurTables Cursor Set @CurTables = Cursor For select name from sysobjects where xtype='U' Open @CurTables Fetch Next From @CurTables Into @ChvTable While (@@FETCH_STATUS = 0) Begin insert into user_tables (テーブル名,行数) values (@CurTables,select count(*) from @CurTables); Fetch Next From @CurTables Into @ChvTable End Close @CurTables Deallocate @CurTables select * from user_tables;
909 :
907 :2005/07/25(月) 15:12:02 ID:dGM+1vOZ
恐らく Begin insert into user_tables (テーブル名,行数) values (@CurTables,select count(*) from @CurTables); の辺りでエラーが起きていると思います。 サーバー : メッセージ 16949、レベル 16、状態 1、プロシージャ PR_user_tables、行 21 変数 '@CurTables' はカーソル変数ですが、カーソル変数が無効なところで使用されています。 とか言われました。 標準のストアドが有ったらいいんですけど、無かったら↑がどうにか動くようにならないでしょうか。
>>902 やったことないけど、sp_OACreate辺りで何とかなるかもね。
でも、
>>906 が言うとおりストアドからメールを送信したい、って
要件が変だと思うが。。。
ムリにストアドでやる処理ではないんぢゃないのかなぁ。
911 :
902 :2005/07/25(月) 15:22:38 ID:TRMXkurN
なんでも、メールのヘッダー情報をalternativeにして、
HTMLメールを送りたいらしいんだけど、
既存のxp_sendmailじゃ送れる文字情報が足りない?のかな?
>>910 sp_OACreateとか、sp_OAMethod使うみたいな事を聞いてます。
>>907 一発で取得できる方法はちょっと判らないけど、出してくれたストアドを修正してみた。
3箇所コードを追加、1箇所コードを削除ね。
CREATE Procedure PR_user_tables
AS
drop table user_tables;
create table user_tables
(テーブル名 varchar(128),行数 int);
Declare @ChvTable varchar(128)
Declare @CurTables Cursor
Set @CurTables = Cursor For
select name from sysobjects where xtype='U'
--追加
DECLARE @SQL NVARCHAR(4000)
Open @CurTables
Fetch Next From @CurTables Into @ChvTable
While (@@FETCH_STATUS = 0)
Begin
--削除
--insert into user_tables (テーブル名,行数) values (@CurTables,select count(*) from @CurTables);
--追加
SET @SQL = N'INSERT INTO user_tables(テーブル名,行数) SELECT @table, COUNT(*) FROM ' + @ChvTable
EXECUTE sp_executesql @SQL, N'@table VARCHAR(128)', @table = @ChvTable
Fetch Next From @CurTables
Into @ChvTable
End
Close @CurTables
Deallocate @CurTables
select * from user_tables
913 :
907 :2005/07/25(月) 16:38:27 ID:???
>>912 早速のご教示有り難う御座います!
追加して頂いた部分を読み返すにつれ吐き気と眩暈を禁じ得ません…。orz
ご教示頂いた部分についてはまだ理解は出来てませんが、
user_tablesをselectするとDB内の各テーブルをcountした集計を取得できました!!
#最後の行の select * from user_tables だけストアド内で動かないので削りました。
有り難う御座いました!!ワショーイ!
914 :
902 :2005/07/25(月) 19:01:26 ID:TRMXkurN
とりあえず、メール送信はできました… exec @rbasp = sp_OACreate 'Basp21', @basp out exec @rbasp = sp_OAMethod @basp, 'SendMail', @basp_msg out, @mail_sv, @from , @send_to , @subject , @body , @attachments exec sp_OADestroy @basp set @basp = 0 (色々省略) ただ、こいつにContent-Typeを設定したいのですが、 どこに書いたらいいかもわかりません…。 ASPと同じく、@send_toにくっつけるの??
関係ないが個人的にはバグが多いbaspよりCDOの方がオススメ
select a.name, b.rowcnt from sysobjects as a inner join sysindexes as b on(a.id = b.id ) where a.type = 'U' and b.status in (2050, 18450 ) order by a.name
917 :
NAME IS NULL :2005/07/25(月) 23:46:35 ID:jRAimYLf
masterってハードウェアが異なるマシンで復元するとダメなの?? 後から一部の設定をポチポチ直すことはできないのかな。 SQL Server自体の設定(ローカルのインスタンスで 右クリック:プロパティ で得られるような情報)の移行めんどくさくない? 誰かこんなモヤモヤ感を吹き飛ばしてくださいm(_ _)m
masterの再構築コマンドが有ったような無かったような。 masterのバッくっぽを忘れたときはそれでmasterを再構築するとかナントカ 記憶がテキトーなのでbooksOnlineでかくにんしてくだふぁい!
919 :
907 :2005/07/26(火) 10:15:22 ID:???
>>916 sysindexes表にrowcount列という物が有ったんですねー…調べきれてませんでしたすみません。
にしても素晴らしい。
ストアドプロシージャで表にガツガツinsert(して出来上がった表をselectする処理)が3分掛かってたのが
このSQL文だと0.5秒で出来ちゃいますね(^^; 貴重なSQLをご提供頂きまして有り難う御座います♪
920 :
NAME IS NULL :2005/07/27(水) 19:12:54 ID:cYgEO8Aj
ストアドで、指定したファイルを1行ずつ読み込みたいんですが どうかいたらいいのでしょうか? DO until (sp_OAMethod @handle, 'AtEndOfStream') /* ReadLineメゾッド・・・1行ずつ読み込む*/ exec @hr = sp_OAMethod @handle, 'ReadLine', @HtmlAll out loop もちろんエラーでます…
出来ました。 正しくは、exec @hr = sp_OAMethod @handle, 'ReadLine', @HtmlLine outでした(^-^; 次は、1行ずつ新規ファイルに書き込みか…
>>920-921 えっと、それはストアドプロシージャでやらなければならない処理なのでしょうか。
もしそうだとしても、そういう処理をやるCOMコンポーネントを作って、それをストアドから
呼び出すほうが良いのではないでしょうか。
>>922 sp_OACreateで、どのようなActiveXを生成しているか示さずに
いきなりsp_OAMethodが動かん、って言ってるワケだから
>>920-921 はただの独り言だろ。相手にしなさんな。
924 :
NAME IS NULL :2005/07/29(金) 15:44:45 ID:+Y0MBKhq
すでに追加済みのデータ(VARCHAR)のデータが重複しているかどうか 調べ、重複してれば対象となるデータの削除をしたいのですが、 うまく行きません。どなたか、教えてください。 もしくは、MS SQLServerに関するTips等を 公開してるHPが有りましたら誘導お願い致します。
>>924 テーブル構造を出して。
重複しているカラムとは別にそのレコードを特定するカラムが存在しないとムリポ。
>MS SQLServerに関するTips等を。。。
MS SQLServerではなくSQLにまつわる話だわな。
テーブル構造ですが、 ID (アイデンティティー化してある。一意の番号) データ1(VARCHARのテキストデータ) データ2(VARCHARのテキストデータ) データ3(VARCHARのテキストデータ) データ削除フラグ1 データ削除フラグ2 データ削除フラグ3 初期のデータ追加の際にデータ重複をチェックしてから、 追加ということをしてなかったせいで・・・orz 宜しくお願い致します〜。
よくわからんけど 1.ある行の データn と 違う行の データn が同じだと削除 2.ある行の データn と 違う行の データm が同じだと削除 3.ある行の データ? と 違う行の データ? が同じだと削除 自分で書いててワケ分からなくなってきたので止めます。 「重複してれば対象となるデータの削除をしたい」も、削除する・しないの基準とかあるのかな?IDが若い方を残す、とか。 delete from table1 where isexists (select data1 from table1 B where table1.data1=B.data1 and table1.ID<B.ID) みたいな? 漏れも初心者なのでおかしかったら教えてください>だれか
>>924 です。
データ1の中で重複があれば、若いIDの方のデータを残すを
データ2、データ3をチェックしたいのです。
>>927 の
delete from table1 where isexists
(select data1 from table1 B where table1.data1=B.data1
and table1.ID<B.ID)
を改良すればいけると思います〜。
どうもありがとうございます。
>>928 SQLがどうたら言う前に日本語をなんとかしろや。
>データ1の中で重複があれば、若いIDの方のデータを残すを
>データ2、データ3をチェックしたいのです。
なんのこっちゃ。
930 :
NAME IS NULL :2005/07/29(金) 23:32:16 ID:TptMJ2aG
1000!
>>924 です。
うわぁ〜〜〜恥ずかしい・・・・
うまくできそうで急いでたらひどい日本語かいてる・・・orz
>データ1の中で重複があれば、若いIDの方のデータを残すを
>データ2、データ3をチェックしたいのです。
データ1の中で重複があれば、若いIDの方のデータを残す、
そして同様にデータ2、データ3もチェックしたいのです。
これでも変ですかねぇ(汗汗
>>931 日本語で判りづらいかな、と感じたらサンプルの元データと期待する結果を
書いたほうがいいよ。
一回それが出来ればいいのかな? ならば安直に同じ構造のテーブルを作ってデータ1,2,3にunique制約をつけて カーソルでも使ってエラーを無視しながら一行ずつデータをコピーすればいいかと。 そうでなければselect min(id),データ1 group by データ1 とかすれば 各データ毎に残すべきidが取得できるから 同じデータでidがそれより大きいものは消す、とでもすればいかが?
934 :
933 :2005/07/31(日) 00:03:58 ID:???
ってもう解決気味だったか。まぁいいや
935 :
NAME IS NULL :2005/07/31(日) 19:01:17 ID:kegvtZTR
SQLServer7をWindows2003Serverで動かしているひといます? 開発用なんだけど大丈夫かな? もうWindows2000Server売ってないだよね。
w2kはwindows msdn版とかで手に入るんじゃないカニ
937 :
NAME IS NULL :2005/07/31(日) 22:54:24 ID:P0gsa3YZ
下のように、UNIONを使って前のSELECTの結果を後のSELECTのFROMに指定することが できないようです。(テーブルBが見つからないというエラー) 同じようなことをSQL一文のみで一時テーブルも使わずに実現できないでしょうか? (SELECT * FROM A WHERE xxxx) AS B UNION SELECT * FROM B WHERE xxxx
>>937 何がしたいんだかわからないが、普通にこれじゃなぜダメなのか?
SELECT * FROM A WHERE xxxx
UNION
SELECT * FROM B WHERE xxxx
こういう構文にすればサブクエリは使えるが意味あるの?
select * from (SELECT * FROM A WHERE xxxx) AS B
UNION
SELECT * FROM B WHERE xxxx
UNIONでつなぐ意味があるのかな。UNION ALLなら判るんだけど。 どういう状況でそんな処理が必要なのか興味あるな。
940 :
937 :2005/08/01(月) 07:46:14 ID:???
>>938 > こういう構文にすればサブクエリは使えるが意味あるの?
その構文でも同じエラーになります・・・・
SQL Server 2000 SP3ですけど。
>>939 その疑問はよく分かります。
実際は * や xxxx には複雑なものが入ります。
ただしそれは質問には関係ないので、聞きたいことが明確に分かるよう
最小形にしたものが質問の内容でした。
>ただしそれは質問には関係ないので、聞きたいことが明確に分かるよう >最小形にしたものが質問の内容でした。 つまり最小形にする段階でさらになにか間違ってるということだね。
ある結果セットと、さらにその結果セット内の一部をUNIONにするって 何をしたいのか全然分からんのだけど? あとSQL一文のみとか一時テーブル使わずに、とかの縛りの理由も聞きたい。
943 :
937 :2005/08/02(火) 00:23:38 ID:AOPF3Fnf
>>942 例えば次のようなテーブルにて「10000よりも大きい値について、
その値とその値を2倍した値の結果セットを求める」というような感じです。
いろいろな方法があると思いますがUNIONを使う方法で試したときに
エラーになったので質問しました。
TestTable
col1
------------
5000
12000
14000
ResultSet
col1
------------
12000
24000
14000
28000
まず単純に考えると・・・
SELECT col1 FROM TestTable WHERE col1 > 10000
UNION
SELECT col1 * 2 FROM TestTable WHERE col1 > 10000
同じような処理があるので次のように考えて・・・・
SELECT col1 FROM (SELECT col1 FROM TestTable WHERE col1 > 10000) AS T
UNION
SELECT col1 * 2 FROM (SELECT col1 FROM TestTable WHERE col1 > 10000) AS U
同じクエリの部分を一つにして・・・・
SELECT col1 FROM (SELECT col1 FROM TestTable WHERE col1 > 10000) AS T
UNION
SELECT col1 * 2 FROM T
しかし、「オブジェクト'T'が見つかりません」エラーが出ました。
そこでなぜ駄目なのかなーと疑問に思ったのです。
他にも方法があると思いますが、その方法を知りたいのではなく
これがなぜエラーになるのか知りたかったのですが・・・
unionってそもそも2つの別々の結果をひとつにするのが目的だから、 一緒にするってのが根本的に間違ってる気がする。
>>943 サブクエリやその別名の対する考え方がまちがっている。
そういう使い方は文法上できないというのが答え。
UNIONの下段のSELECT命令は上段SELECT命令の内容に左右されない、だから下の段では
サブクエリでは無く実際のテーブルやビューのTを参照しそれが無いというエラーになる。
そもそもサブクエリに別名をつけていてもそこで実際に中間の結果セットが
作られるかどうかの保証は無い。実際の実行プランはプランナに左右される。
最初のクエリで正解。実行計画によってはあなたが期待した動きをしている可能性もある。
あとUNION ALLでなくUNIONを使う必要があるかはよく検討するべき。
946 :
937 :2005/08/02(火) 07:37:00 ID:???
947 :
NAME IS NULL :2005/08/02(火) 19:54:35 ID:IqfK276y
ストアドプロシージャで、大量のOpenTextFileを実行させると、 255ファイル目で、正常にオープン出来なくなります。 (戻り値=10077) 現在、3000ファイルをオープンさせようとしているのですが、 どうしたらいいでしょうか…
SQL Server 2005の SQLCLRのクラスライブラリに関する ドキュメントが見当たらん。どこにあるんだ?? Books Online探しても見つからねえ・・・orz
949 :
947 :2005/08/02(火) 20:21:10 ID:IqfK276y
>>947 ちなみに、1つ前のOpenTextFile後のCloseは、
正常に閉じれています。
>>947 それって本当にストアドで読み込む必要があるの?
vbsでもperlでもいいから、外部プログラムで1ファイルにまとめてから
SQLに渡したほうが楽そうな気がする。
>>951 >>この修正プログラムを適用した後に、コンピュータを再起動するべきではありません。
( ゚д゚)?再起動したら元に戻っちまったりして?
つまり,電源の切断が禁止になるパッチということだな。
相変わらず間抜けだな、MSの自動翻訳。 You do not have to restart → 再起動する必要はありません。 だろ、普通…
まぁhave to と have not to、 must toとmust not toは漏れも結構悩んだよ。 中学生の時だけど・・・
958 :
955 :2005/08/04(木) 14:41:08 ID:???
いや、MSの翻訳エンジンは中学生並じゃねーのかと!
959 :
NAME IS NULL :2005/08/04(木) 17:39:35 ID:t9Obyxtq
ADOの話だったりしますが、以下の件についてご存知の方がいましたら、教えてください。 ADODB.Commandオブジェクトでパラメータの数が不定な場合はどうすればいいんでしょうか。 たとえば以下のような感じのSQL。 select * from foo where id in (?) このとき、?の部分に来るパラメータの数が一定ではない場合です。上記の書き方だと、 パラメータはひとつしか渡せないのですが、パラメータはひとつの場合もあれば、三つの 場合もあります。なんかうまい方法は無いでしょうか。 よろしくお願いします。
>>959 テーブル名可変の場合、だけど、何かもっと上手い方法が有るんじゃないか、
と思いつつ、ストアドの中で
set @sql=N'select * from ' + @テーブル名 + ';'
sp_executesql @sql文
ってやってるなぁ。in句の場合は一時テーブルに入れてしまって
sql文は固定してしまう方がパフォーマンスは上がりそうだけど。
CommandTextを動的生成すりゃいいだけじゃ無いん?
963 :
NAME IS NULL :2005/08/09(火) 14:34:53 ID:Lv2nBy4V
SELECT文のWhere条件で、 Like条件を課すときに、 ひらがな、カタカナを区別なしにSELECTしてしまいますが、 ひらがな、カタカナを区別することは可能でしょうか? 例) Like'%あ%' の場合 ・あいうえお ・アイウエオ 両方ともSELECTしてしまう。
>>963 select * from テーブル where カラム like '%あ%' COLLATE Japanese_CI_AI_KS
TechED行ってきたんだけどさ、2005はミラーリング時に待機系と監視系のSQL Serverライセンスが 要らないんだってYO
>>965 フェイルオーバークラスタの待機系はもとからライセンスは要らなかったと思ったが
監視系ってなんだろう。
>>968 Index付けするときの制約が2005で弛んだとかじゃまいか。
ANSI_NULLS をONにしろとか色々あったじゃん。
970 :
NAME IS NULL :2005/08/10(水) 16:39:51 ID:XqhE6Lry
SQL2005はいろいろよさそうではあるが、 ANSI SQLのinterval型とdate型の追加は欲しかった。
喪前らに SQL 2005 絡みで相談なんですが… いまだに SQL Server 7.0 (Win2K)を使ってるのだが WSUS や Groupboard 使いたいので アップグレードを検討してます。 SUS は来年6月でサポートが切れるらしいので それまでに SQL をアップグレードしたいのだけど 今すぐ SQL 2000 を買うべきか それとも SQL2005を待つべきか どうでしょう。
>>971 GroupBoard と WSUS を使いたいだけなら今すぐ2000を買う。
これから.NET開発を始めたりするなら2005を待つ。
予算に余裕があるなら L+SA でアシュアランスを付けて2000を買う。
手感じ?
>>971 サポートが切れて、おまいがいつ頃どれだけ困るかによると思うけど。
長々βテストやってたとはいえ 出始めの2005に乗っかるのは危険ではなかろうかと思ったり。
>974 同意。 W2003とかを見る限り、以前より出始めの品質はマシになった気はするが。
いつどれだけ困るかを量るのって難しいよ。 有事に混乱しないためにはサポートが切れる前に予算を組むのが常套なんじゃないかな。 SUSはセキュリティに直結するソフトだし。
新バージョンが出ても新機能を使わなければ、それほどトラブルはないと思うが。 まあ、漏れは後1年はWinXP+VS.NET2003+SQLserver2000体制で行くが。
SQL2005を買っておいてSQL2000にダウングレードして使うというのもいいんじゃないか。
979 :
971 :2005/08/11(木) 08:11:14 ID:???
お前ら、ご助言ありがとうございます。
>>972 .NET開発の予定はありません。
7.0 で機能面では今まで事足りてた程度のことしか
してませんので。○| ̄|_
>>973 SUS はサポートが切れた時点でセキュリティアップデートの
供給が現実的に止まってしまいますので、即、困ります。
なのでミグレーション期間も考慮に入れると
遅くとも来年5月頃までにはアップグレートしなくては
いけません。
>>974 普段はOSなどでも原則として SP1 が出るまで導入しない慎重派です。
SQL2005のSP1って何時頃でしょうね。
>>978 その方法ならSQL2Kのライセンスフィーは要らないということですか?
SQL2000を買って2005にアップグレードとの違いというか
あえてダウングレードするメリットが良く理解できないのですが…
だうんぐれーどってタダみたいな値段? だったら1本で2種類買えてウマー。
>980 ダウングレードはタダみたいな値段と言うより無償やね。 同時に二種類以上使える訳ではないので、念の為。 ちなみに、OSでもOfficeでもVisual Studioでも可能です。 >979 ダウングレードするメリットは、要は既に正規パッケージや ライセンスを購入できない製品を使用できること、それに尽きる。 今回の場合だと、2000で様子を見ながら、2005が安定したと 判断できた所で追加費用を必要とせずに2005に変更できる所だと 思う。
>>979 ミグレーション の検索結果 約 126 件
マイグレーション の検索結果 約 132,000 件
ダウングレード権は箱売りのソフトには付いてなかった希ガス。 SQL Serverは例外かもしれないけど。
各テーブルのデータ型、キーインデクスなどのテーブル構造を一覧で抽出したいんだが SQL文で可能でしょうか ちなみにSQL2000です
2000です データを誤って全部削除してしまいました 削除前に復元する方法がありましたら教えてください ファイルの容量は大きいままです
>>985 sp_help だとフィールド情報とかも取れた。
990 :
NAME IS NULL :2005/08/12(金) 14:50:13 ID:LFPiNd2K
sp_xxxはクエリアナライザでグリッド表示させるにはいいが、 isql や sqlcmd などで手軽に表示できるのはないものか。
りばーすえんじにやツールでも作ってくれよ!