2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Microsoft SQL Server 総合スレ 5

1 :NAME IS NULL:2007/03/28(水) 23:24:40 ID:???
Microsoft SQL Server 総合スレ 5


2 :NAME IS NULL:2007/03/28(水) 23:26:15 ID:???
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/


・過去スレ

Microsoft SQL Server 総合スレ 4
http://pc11.2ch.net/test/read.cgi/db/1142315583/l50

Microsoft SQL Server 総合スレ3【MS SQL】
http://pc11.2ch.net/test/read.cgi/db/1123981539/l50

MS SQL Server 総合スレ2
http://pc11.2ch.net/test/read.cgi/db/1093012583/l50



3 :NAME IS NULL:2007/03/29(木) 15:30:30 ID:???
SQL質疑応答スレから来ました。


SQL Server2005を利用しております。
DBが何らかの理由により、select文等を実行出来ないもしくは実行に十数秒時間が
掛かったらアラートとして指定のメールアドレスに通知を行いたいと思います。
何かいい方法とかツールはありますでしょうか?

4 :NAME IS NULL:2007/03/31(土) 08:52:41 ID:gRQsHyCj
DB板はdat落ちの心配がなくていいな

5 :NAME IS NULL:2007/04/01(日) 00:23:03 ID:???
>3
調べるだけならプロファイラでDurationが10000以上とか条件を入れればいいんだけど、
それをメールで送るってどうしたらいいのかよくわからん。

6 :NAME IS NULL:2007/04/02(月) 20:40:50 ID:???
なんでSQLCLRは普及しないの?

7 :NAME IS NULL:2007/04/02(月) 23:35:58 ID:???
配置、配置した後のアセンブリ入れ替えなどが面倒だから普及しない、
と思ってる。

思ってるだけで、詳しいことは知らないわけですが・・・


8 :初心者:2007/04/03(火) 09:47:46 ID:vqFH/tMY
すみません、質問です。
SQL SERVER 7.0を使用中ですが、完全バックアップのみ
現在バックアップを毎日とっています(日付入りで別ファイルごとに)。
しかしこれから毎日その完全バックアップのファイルに差分バックアップ
をとって、今までと同様に別ファイルに更新したいのです。

しかし差分バックアップの設定をする際に特定のファイルしか指定できません。
(例えばDB名SQLDBの場合SQLDB_db_200704030901.bakのファイルへしか
差分バックファイルが指定できなく、次に新しい完全バックアップファイル
(SQLDB_db_200704032101.bak)が出力された時にもSQLDB_db_200704030901.bakへ
続いて差分バックアップする。)
完全バックアップのファイルが別ファイルに出力された時点で
差分バックアップもそのファイルの差分バックアップへ移行したいのですが。


9 :NAME IS NULL:2007/04/03(火) 10:00:55 ID:???
>>6

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1405832&SiteID=7

でも、SQL CLR はかなり問題を抱えていますよ。
パフォーマンスは当初言われているほど早くない。
スキーマごとに Application Domain を構成するので、暴走したり、
例外を発生してしまった場合、Application Domain のアンロードされるので、
そのときにSQL CLR でトランザクションをかけてデータの追加・更新・削除などを行っていると、
問答無用でロールバックされ、さらに原因がわかるログを残してくれないという罠。

データベースの照合順序(例:Japanese_CI_AS、デフォルト)と SQL CLR 内部で
文字列比較をするとデータベースの照合順序とは違う結果が返ってくる。(これは明らかにデザインバグ)
Japanese_CI_AS の場合は IF 'A' = 'A' は真ですが、SQL CLR で比較すると偽になります。
(SQL CLR は OS の NLS を使っている)

例外処理も大変でエラー番号:6522 が返るだけで、実際に調べるには RAISERROR を使わないと
分からない場合がある。

32bit の場合、SQL CLR は Memory To Reserve にロードされますが、デフォルト 256MB なので、
あっという間にパンクする可能性があります。
ですので、SQL Server を起動するときの起動オプション -g である程度のサイズを確保してください。

結構なリスクがあるんですが、それでも SQL CLR 使いますか?
これ意外にもまだまだトラップがいっぱいありますよ。



10 :NAME IS NULL:2007/04/04(水) 09:13:19 ID:???
SQL Server 2005 Service Pack 2 の重要な更新
http://support.microsoft.com/?kbid=934458
http://www.microsoft.com/downloads/details.aspx?FamilyID=d09cf5c4-fec4-4322-9fee-06a43401cf0c&DisplayLang=ja

11 :NAME IS NULL:2007/04/05(木) 00:57:38 ID:???
↑ いよっ色男、気が利くねぇ

12 :NAME IS NULL:2007/04/05(木) 20:25:15 ID:???
SQL Server 2005 Service Pack 2 の重要な更新
http://support.microsoft.com/?kbid=934459
http://www.microsoft.com/downloads/details.aspx?FamilyID=a7c903fe-35a7-4bb2-8e73-932770099711&DisplayLang=ja

あれ?

13 :NAME IS NULL:2007/04/05(木) 20:33:32 ID:???
更新前のビルド番号によって KB番号が分かれてるのね。
このビルド番号の違いは何に起因するんだろう。

14 :NAME IS NULL:2007/04/05(木) 20:36:01 ID:???
あー。
Build3042〜3053 >>10
Build3150〜3158 >>12

15 :NAME IS NULL:2007/04/05(木) 20:38:53 ID:???
31xxは見たことないな。
先月のSP2差し替え( http://support.microsoft.com/?kbid=933508 )でも
3042→3043だしなぁ(旧SP2を入れてしまって上記をパッチ当てても3050)。

16 :NAME IS NULL:2007/04/07(土) 01:30:14 ID:???
正直、2000 SP4 で何も困らない

17 :バリバリ:2007/04/09(月) 18:59:18 ID:Mh1EPvod
SQLserver2005をインストールして

読込処理を行ったら異常にレスポンスが遅かったです。

C#で開発を行っておりますが、試しにDBをORACLE10に変えてみたら

読込速度はUPしました。

この差は何なんでしょうか?

ちなみにインストール時から何もいじってない初期状態です。





18 :NAME IS NULL:2007/04/09(月) 19:30:06 ID:???
SQLServerにすると老人に会い、PosgreSQLにすると病人に会い、
MySQLにすると死者に会い、Oracleにすると沙門に会い出家することにしました。
諸行無常。

19 :NAME IS NULL:2007/04/09(月) 20:32:41 ID:b02tiFqE
あのさ、おれも君たちの大嫌いな在日だが。在日3世。
別に嫌われようがこっちはどうでもいいよw

日本という国における「楽して稼げる職業」は在日・帰化人が握ってるし(笑)
脱税もしまくりで、相続税も免除なのよw。闇口座も仮名で作り放題w。
世代を経るにしたがって金が増えてく寸法さw。パチンコ、サラ金、日本の長者番付にのってるのは在日なんだよw。
金あるから在日でも日本人女とやりまくり。さらにはレイプしても全然バレないw
あと数年で日本の参政権も取得できるし(爆) 既得権益最高!

俺達はもうお前達みたいに毎日毎日職業とか将来とか金の心配なんかしなくていいんだよw
バックに朝鮮総連や創価学会がついてるし、働かなくても行政から月20万の金入ってくるしねw
今俺達が考えてるのはもっと大きいこと。
いかにしてこの日本という国をボコボコにいじめ抜いてやるか、ってこと。

つまり、日本の中に、俺たち朝鮮人、韓国人の血を増やして在日を増やす。
んで日本人を少数派にしてその日本人をいじめたおす。んでこの国を乗っ取る。
今はもうその最終段階に入ってるわけ。
平和ボケした危機感ゼロのお間抜け日本人は気づいてないがw

例えば韓流ブーム。あれは在日が作ったって知ってる?
あれだけ大規模なブームを作れるくらい、もう日本の中で在日の力は最強なんだよ。

自分達を地獄に導いてるとも知らずに毎日毎日テレビで韓国をヨイショしてくれる日本人w
韓流ブームのお陰で在日や韓国人へのマイナスイメージがプラスイメージになった。
そして日本人が韓国人や在日と結婚する数も圧倒的に多くなった。
つまりもうあと30年で日本は完全に在日主体の社会になるよ。

たった100万人に満たない在日に使われる1億人の日本人w お前ら糞日本人に一生地獄の生活を見せてやるよw

どう?ムカムカする?(爆)
でもせいぜい今みたいに2ちゃんで数十人ぐらいがチョン死ねって言うぐらいだろうね(爆)


20 :NAME IS NULL:2007/04/09(月) 21:14:18 ID:???
>>17
これでわかったら神だな。

21 :NAME IS NULL:2007/04/12(木) 18:36:09 ID:GlEB0TmN
>>15
http://support.microsoft.com/kb/933097/

SQL Server 2005 SP2 の更新されたやつインストールしても
ビルドが 3042 のままなんだけどいいのかなぁ・・。
KBには 3043 になるとか書いてるんだけど・・。
それとこの累積的な修正だって
ダウンロードセンターにはでてないし
SQL Server のページにも載ってないし
もうすこし情報を整理してほしいなぁ

22 :NAME IS NULL:2007/04/12(木) 21:30:39 ID:???
>>21
http://blogs.sqlpassj.org/yoshihirokawabata/archive/2007/04/11/21556.aspx

23 :NAME IS NULL:2007/04/13(金) 04:50:46 ID:???
げー…。相変わらずわかりにくいな。

24 :NAME IS NULL:2007/04/13(金) 17:58:41 ID:???
初歩的な質問なんですが、あるテーブルでIndexをInt型にした場合、自動的にIndexが
1、2、3、4、5、6…と割り当てられていくと思うのですが、Intの最大値に達してしまった場合
どうなるのでしょうか。
また、DELETEされた物を再利用してくれるのでしょうか?



25 :NAME IS NULL:2007/04/13(金) 18:04:52 ID:???
>>17
お役にたてるかわかりませんが、SQLServerへの接続は何をつかっていますか?
System.Data.SqlClientを使われていますか?それともSystem.Data.OleDbですか?

SQLServerの場合はSqlClientを使うことによってOleDbよりもパフォーマンスは格段にあがります。
また、SQLServer側の簡単なチューニングをされると良いみたいです。
自動チューニングウイザードみたいなのもありますし、@ITに幾つか記事がでているので参考にしてみてください。

うちもC#で開発していますが、明らかにSQLServerのほうがパフォーマンスは良いです。
(DB初心者なのでOracleのチューニングができていないのかもしれませんが)

26 :NAME IS NULL:2007/04/13(金) 20:49:39 ID:???
>>24

> どうなるのでしょうか。

次のエラーが返されます。

サーバー : メッセージ 8115、レベル 16、状態 1、行 1
IDENTITY から型 *** への変換で、算術オーバーフロー エラー。
算術オーバーフローが発生しました。

> また、DELETEされた物を再利用してくれるのでしょうか?

いいえ。


次のページにサンプルがあります。

IDENTITY があふれた場合のエラーを確認してみた
http://blogs.sqlpassj.org/yoshihirokawabata/archive/2005/08/25/12906.aspx

27 :NAME IS NULL:2007/04/14(土) 09:10:41 ID:mB32J/Jk
河端さん、常駐ご苦労様です!

28 :NAME IS NULL:2007/04/14(土) 13:53:00 ID:???
>26
Oracleだとあふれた後の挙動とか先頭に戻るとか設定できたんだよなぁと思った。

29 :NAME IS NULL:2007/04/15(日) 21:22:54 ID:???
すいません、ご存知の方いらっしゃいましたらご教授頂きたいのですが。

SQLServer2000を使用したシステムで
実際に動作させている時は全く問題ないのですが、
エンタープライズマネージャで全行表示を実行すると
「TEXT、NTEXT、または IMAGE ノードのページ (x:x)、スロットxが存在しません。」
(xは数字)
というエラーが表示され、レコードの表示が途中で止まってしまいます。
このエラーメッセージは、どんな要因で表示されるのでしょう?

(NTEXT型のカラムが一つだけありますが、読み込みが中断される行
 の内容も特に問題はありませんでした)

30 :NAME IS NULL:2007/04/15(日) 22:41:51 ID:???
>>29
DBCC CHECKDB してみたら?

31 :NAME IS NULL:2007/04/17(火) 16:13:13 ID:???
SQL Server 2000 です。
テーブルA とテーブルB を結合させ、A の全列と B の必要項目のみを
抜き出す VIEW を作成しました。

この時、テーブルA の末尾に列を1つ追加して VIEW を実行すると、
追加した列が表示されずに、VIEW の列がおかしな事になります。

これはどのように解消すればよいでしょうか?

32 :NAME IS NULL:2007/04/17(火) 21:23:36 ID:???
>>31
結合 = UNION?
それとも JOIN?

33 :32:2007/04/17(火) 21:55:56 ID:???
多分 JOIN だろうと思って試してみたらホントにそうなった。
列のポインタがずれたような感じで表示される。つまり新たに追加した列にひとつ前の列が表示されるような感じ。
で、ビューを作りなおしたら期待したとおりに表示された。

新しく追加した列を削除してからビューを表示すると次のエラーが返されるので、テーブル定義を変更したら定義しなおさないといけないみたいね。
▼▼▼▼▼
サーバー : メッセージ 4502、レベル 16、状態 1、プロシージャ VIEW1、行 4
ビューまたは関数 'dbo.VIEW1' には定義された列数よりも多くの列名が指定されています。
サーバー : メッセージ 4413、レベル 16、状態 1、行 1
ビューまたは関数 'View1' はバインド エラーにより使用できませんでした。
▲▲▲▲▲

次のスクリプトは、サンプルの Northwind を使って試してみた例です。

/*******
* ビュー作成
********/
USE Northwind
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[VIEW1]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[VIEW1]
GO

CREATE VIEW dbo.VIEW1
AS
SELECT dbo.Region.*, dbo.Territories.TerritoryID,
dbo.Territories.TerritoryDescription
FROM dbo.Region INNER JOIN
dbo.Territories ON dbo.Region.RegionID = dbo.Territories.RegionID

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

/*******
* ビュー作成後の操作
********/
USE Northwind
GO
-- テーブルへの列の追加
ALTER TABLE Region
ADD memo VARCHAR(20) NULL
GO
-- 新しく追加した列に値を入れる
UPDATE Region
SET memo = 'memo'
GO
-- ビューを見る
SELECT * FROM VIEW1
GO
-- 新しく追加した列を消す
-- ALTER TABLE Region
-- DROP COLUMN memo

34 :32:2007/04/17(火) 22:16:05 ID:???
ちょっと調べてみたが、ビューの SELECT 文で * を使うのはよくないみたい。
ビューに影響を与えるようなテーブル変更は CREATE VIEW に WITH SCHEMABINDING オプションをつければ検出してエラーにできるけど、
WITH SCHEMABINDING をつけると列に * を指定していることを指摘されてエラーになりました。



35 :NAME IS NULL:2007/04/18(水) 14:46:03 ID:???
トランザクション処理で、ID削除後にまた同じID追加場合って、DELETE→INSERTじゃなく
ただのUPDATEとしてコミットしてくれるんだろうか?
なんとなく処理時間短くなったような気がしたんでそんなこと思っただけなんだけどさ

36 :NAME IS NULL:2007/04/18(水) 15:34:53 ID:???
テーブルを引数にしたプロジージャってできるかな。

37 :NAME IS NULL:2007/04/19(木) 21:31:45 ID:???
>>36
SQL Server 2000 で試したら、table 型の引数を持ったストアドプロシージャは作れなかった。

CREATE PROCEDURE sp_test
@param1 varchar,
-- @pTable table,
@param2 varchar
AS
SELECT @@version
GO

コメントをはずすと構文エラーになる。
BOL に次の記述があるが、これがその説明に相当すると思う。

> table 変数間における代入操作はサポートされていません。

38 :NAME IS NULL:2007/04/22(日) 13:05:35 ID:FvHL9xyS
すいません、SQLServer2005 をSP2にしたいのですが、結局どれを当てればいいのでしょうか?

39 :NAME IS NULL:2007/04/22(日) 16:06:31 ID:???
>>38
これの最後にある図を見て、934459 をインストールすればとりあえず問題なし。

SQL Server 2005 Service Pack 2 と General Distribution Release のインストール順
http://www.microsoft.com/japan/sql/sp2_gdr_install.mspx

40 :38:2007/04/22(日) 17:34:19 ID:???
>>39
すいません、助かります。
数百メガ落とさなきゃいけないのかと心配していました。新しいのに含んでいるみたいなので
それだと100メガ程度で済みそうですね。

41 :NAME IS NULL:2007/04/22(日) 20:47:08 ID:BzBc7zTG
AP2 のあとにいきなり KB934459 をインストールでよかったのか
KB933097 をいれてから KB934459 をいれちゃったよ。
KB933097 のファイルがゴミになって残ってなければ良いんだけど・・・。
しっかりしてくれよ、河端さん・・・・。

42 :NAME IS NULL:2007/04/23(月) 05:07:48 ID:???
SP3まだですか?

43 :NAME IS NULL:2007/04/23(月) 07:23:49 ID:???
河端氏を責めるのは酷だろう。
しかし、MSの「SQL Server 開発チーム ブログ」の役に立たなさは凄いな。


44 :NAME IS NULL:2007/04/23(月) 15:27:38 ID:kp6Au5Ga
最近データベースに興味をもって勉強しはじめました。
一つ質問があります。

マイクロソフトの資格に

MCA データベース (MCA Database)

Microsoft SQL Server 2005 - Implementation and Maintenance
試験番号:70-431

の二つがありますが、まずチャレンジしてみるということにおいては
MCA データベース (MCA Database)を狙ってみるのがいいですよね?
この二つは難易度もまるで違いますか?
どなたかご教授下さい。
よろしくお願いいたします。

45 :NAME IS NULL:2007/04/23(月) 17:22:13 ID:4bwOdoqx
ソフトバンク携帯について

「全然繋がらないから解約しようとしたら、6万請求された」とよく聞く※。
(繋がりにくい理由は、ソフトバンクが使用する周波数が建物に弱いことによる)

そして、各種プランが良くないが、ホワイトプランが特に良くない。
携帯のメーカーの数で考えて「友人の4分の1くらいは持ってる?」と考えがちだが…


  ソフトバンク携帯を持つのは 約300人 に 1人。


300人の友人がいても、確率的にはそのうち1人しか無料にならない。(契約数/日本人口で計算)
その1人以外の通信料はすべて、他社の約2倍。1日たった7分でも1万円を超える。

長者番付にのるような在日企業は、ほぼ全部がパチンコ・サラ金・風俗と、法の裏側を行くものばかり。
(本社が韓国にあるものは違う。まあ、本社がハンバーガー屋で支社がサラ金というのも有り得ないが)
日本に本社を置く在日企業としては、まさにソフトバンクは、ただ1つの例外。 なのだが…

思い込みやら、まず読まない契約書の解約金やらを利用した商法も目立つ。気をつけて欲しい。

※…新聞記事は「0円携帯 解約に6万円 県、ソフトバンクに改善要望」で検索
  ↓ついでに。思い込みを利用されているのは、実は、投資家も同じだったり…
  ttp://news21.2ch.net/test/read.cgi/bizplus/1176891847/

46 :NAME IS NULL:2007/04/23(月) 18:16:51 ID:???
SQL ServerじゃないですがMSDE2000の質問です。

Enterprise ManagerでDBをタスクパッドで見るとデータサイズが 1.99G あります。
ですが、テーブル情報を見ても(全て併せて) 650MB しかありません。

データベースの圧縮を行っても圧縮されません。
データベースのバックアップを取ってから圧縮してもサイズが変わりません。

どうすれば圧縮できるようになりますか?

47 :NAME IS NULL:2007/04/23(月) 21:08:40 ID:???
>>44
MCA の方は知らないけど、データベースを触り始めて 2 ヶ月で 70-228, 229, 431 はとれましたよ。
そんなに難しくないです。79-431 は次の本を一通り読んで、

http://www.amazon.co.jp/MCP%E6%95%99%E7%A7%91%E6%9B%B8-SQL-Server-2005-%E8%A9%A6%E9%A8%93%E7%95%AA%E5%8F%B7/dp/4798111678/sr=1-2/qid=1170579331/ref=sr_1_2/503-2080075-7761530?ie=UTF8&s=books

後は次の自習書シリーズで補えばいいと思います。

http://www.microsoft.com/japan/sql/techinfo/selfstudy.mspx

試験範囲外のものもあるので、試験範囲はチェックした方がいいと思います。

>>46
データベース ファイルのファイルサイズ = 1.99 GB
データベース ファイルの使用中のサイズ = 650 MB
という意味ですよね?
クエリ アナライザから
DBCC SHRINKDATABASE (<databasename>, 10)
を実行してみたらどうですか?
タスクパッドはリロードしないと表示は更新されないことに注意です。

48 :46:2007/04/24(火) 12:33:38 ID:???
>>47
データベースのサイズは、その認識であってます。

タスクパッドで見ると
全般タブ の割り当て済み領域 = 1.99GB
テーブル情報タブ のテーブルのサイズを合計した値 = 650MB
です。
ただ、テーブルは複数ありますが、その中の1つが600MB以上サイズを取っています。

クエリアナライザで
DBCC SHRINKDATABASE (<databasename>, 10)
を実行した後、Enterprise Managerを開いて確認してもサイズは変化しませんでした。

49 :NAME IS NULL:2007/04/24(火) 19:52:59 ID:???
>>48
"その認識" って・・・

まあそれはおいといて、ステートメントを実行してその結果が普通と違うんで、
いろいろ試す必要がありそうですね。とりあえずこんなところでしょうか。

イベントログにエラーが記録されてないかチェックしエラーがあったらトラブルシュートする
SQL Server のエラーログをチェックしてエラーがあったらトラブルシュートする
DBCC CHECKDB を実行してみる
バックアップを別の DB に戻してそこで DBCC SHRINKDATABASE を実行して圧縮できるか試してみる



50 :46:2007/04/24(火) 20:49:46 ID:???
>>49
もっと細かく書かないとわかんねーだろうが。
もったいぶってないで手順を詳しく書いてください。

51 :NAME IS NULL:2007/04/24(火) 20:53:42 ID:???
だが断る

52 :NAME IS NULL:2007/04/24(火) 20:56:03 ID:???
えらそうだね。

53 :NAME IS NULL:2007/04/24(火) 20:57:13 ID:???
つか、これがわかんねーの?

54 :NAME IS NULL:2007/04/24(火) 21:00:52 ID:???
>>51-53
自演乙

55 :NAME IS NULL:2007/04/24(火) 22:55:26 ID:???
>>47
ありがとうございます。
その参考書はみたことあります。
一度購入してみて、じっくり勉強してみます。
ありがとうございました。

56 :NAME IS NULL:2007/04/25(水) 18:20:23 ID:???
Express Editonの
Toolkit serviceとAdvanced Serviceってどっちが強いの?

57 :NAME IS NULL:2007/04/25(水) 20:15:52 ID:???
>>56
内容はそれぞれ違います。Express はほとんど使ったことないので間違ってたらすみません。

1) SQL Server のデータベースだけ使いたいときにインストールするもの
SQL Server 2005 Express Edition SP2
Microsoft SQL Server Management Studio Express Service Pack 2

2) Reporting Service を使いたいときにインストールするもの
SQL Server Express with Advanced Services
SQL Server Express Toolkit

SQL Server Express with Advanced Services にしか Reporting Service は含まれていない。
SQL Server Express Toolkit にしか Business Intelligence Development Studio は含まれていない。
これは Reporting Service のレポートを作るのに必要です。

普通は 1) にあるものだけインストールすれば問題ないと思いますよ。
SSMSE SP2 だけ探すのが難しいのでリンクを貼っておきます。

Microsoft SQL Server Management Studio Express Service Pack 2
http://www.microsoft.com/downloads/info.aspx?na=47&p=5&SrcDisplayLang=ja&SrcCategoryId=&SrcFamilyId=5b5528b9-13e1-4db9-a3fc-82116d598c3d&u=details.aspx%3ffamilyid%3d6053C6F8-82C8-479C-B25B-9ACA13141C9E%26displaylang%3dja

58 :NAME IS NULL:2007/04/25(水) 22:41:59 ID:???
>>57
ありがd
1)だけで十分だわ


59 :NAME IS NULL:2007/04/26(木) 00:01:11 ID:???
クエリアナライザのエディタは
Visual Studio みたいな
コードの整形機能(?)はないんでしょうか?

60 :46:2007/04/26(木) 11:44:56 ID:???
>>49
返事が送れてすみません。
それと言葉使いがおかしいみたいでごめんなさい。

SQL Serverのログには、<database>開始中とかしかありませんでした。
そのDB全体のバックアップをとり復元を行い、圧縮をしましたが同じ結果でした。

DBCC CHECKDB を実行した結果は、各オブジェクトに何行データがあるかが
表示され、「0 個のアロケーション エラーと 0 個の一貫性エラー」と表示されました。

データが多いテーブルに関しては以下の情報が出力されています。
----------
'table' に対する DBCC の結果。
オブジェクト 'table' の 39256 ページの中に 88649 行あります。
----------
行数に対してページ数が多すぎるのでしょうか?
table のデザインは datatime, float × 200のレコードです。

>>50は私が書いたものではありません。

61 :NAME IS NULL:2007/04/26(木) 15:30:08 ID:???
>>60
CREATE DATABASEしたときの初期サイズが2GBなんじゃない?
通常の圧縮操作(DBCC SHRINKDATABASE)だと初期サイズ以下にはならない。
DBCC SHRINKFILEでtarget_sizeを指定するといいはず。

62 :46:2007/04/26(木) 18:04:43 ID:???
>>61
初期サイズは1MBで作成しました。
DBCC SHRINKFILE (<database>_Data, 10)を実行しましたがサイズは変わりませんでした。

以下のSQLを実行しています。
----------
CREATE DATABASE <database>
ON PRIMARY
(
NAME = <database>_Data,
FILENAME = 'D:\DB\<database>_Data.mdf',
SIZE = 1MB,
FILEGROWTH = 10%,
MAXSIZE = UNLIMITED
)
LOG ON
(
NAME = <database>_Log,
FILENAME = 'D:\DB\<database>_Log.ldf',
SIZE = 1MB,
FILEGROWTH = 10%,
MAXSIZE = UNLIMITED
)
GO

MSDE2000でバックアップを取ったDBを WorkgroupEditionに復元をして
>>47>>49>>61のことを実行しましたが、サイズは減りませんでした。

新しくDBを作り、insert into <database>.dbo.<table> select * from <table>
を実行してサイズを確認すると、300MBほどになっていました。

63 :NAME IS NULL:2007/04/26(木) 22:31:09 ID:???
>>62
> DBCC SHRINKFILE (<database>_Data, 10)を実行しましたがサイズは変わりませんでした。

これダメです。DBCC SHRINKFILE の第二引数はサイズ(MB) で、
ここにデータベース ファイルの使用中のサイズより小さい値を指定すると何も起こりません。

>>47 によると、
>データベース ファイルの使用中のサイズ = 650 MB
とのことなので、まず 700 あたりを指定してみたらどうでしょう。

64 :NAME IS NULL:2007/04/26(木) 22:39:30 ID:???
>>59
SQL Server 2000 の話だと思いますが、SQL Server 2000 のクライアントツールには
そういうイイものはついてません。

どの程度のことを期待されているのかわかりませんが、
私だったら、SQL Server Management Studio で SQL Server 2000 に接続します。
SSMS にはクエリ エディタが統合されており([クエリ]→[エディタでクエリをデザイン])、
これを使えば Access や MSQuery 程度のことは簡単にできます。
ただし最終的にテキストエディタは必要になると思います。

SSMS は >>57 のリンクからダウンロードできます。
ただし .NET Framework 2.0 のインストールが必要です。

65 :NAME IS NULL:2007/04/27(金) 11:51:46 ID:???
>>63
すみません、自分でもDBサイズについて、よくわかっていないようでした。
タスクパッドの割り当て済み領域を見ると以下のようになっています。

データ
全体 :1995.75MB
使用中:1995.75MB
空き :0MB

トランザクションログ領域
全体 :0.99MB
使用中:0.29MB
空き :0.7MB

DBにはMSDE2000を使用しているので限界の2GBに達しています。
これをWorkgroupEdtionにバックアップから復元をしても圧縮出来ませんでした。
以下の作業は、MSDE2000, WorkgroupEditionで実行しました。

DBCC SHRINKFILE (<database>_Data, 1900)を実行しても圧縮されませんでした。
----------
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ------ ----------- ----------- ----------- --------------
7 1 255456 128 255448 255448

2000にすると以下のエラーが出力されました。
データベース 'database' のファイル '1' を 256000 ページに圧縮することはできません。
255456 ページしかありません。

66 :NAME IS NULL:2007/04/27(金) 13:11:45 ID:R0pzkXZh
>>65
"圧縮" (shrink) という言葉を zip や lzh のような圧縮 (compress) と混同していますね。
SQL Server に対して使用する圧縮という言葉は、データベース ファイルのうち
データ(オブジェクト)が入っていない部分を解放するという意味です。

現状ではデータベース ファイルにいっぱいまでデータが入っているので、
レコードなどのオブジェクトを削除しないとデータベース ファイルはこれ以上小さくなりません。


67 :46:2007/04/27(金) 13:41:49 ID:???
>>66
タスクパッドから見るテーブル情報の全サイズは 630,168K です。

ということはデータの使用中サイズの 1995.75MB の中に
データがちりばめられて保存されているということでしょうか?

サイズが大きいテーブルのデザインは以下になっています。
datetime × 1, float × 200
インデックスは datetime を指定しています。

68 :46:2007/04/27(金) 18:55:02 ID:???
失礼かとは思いましたが、別の場所でも質問させてもらいました。
レスして頂いた方の情報から、そこで以下のようなことが分かりました。

DBCC SHOWCONTIG をすると、サイズが大きいテーブルの断片化が激しいことがわかりました。
LogicalFragmentation が 99% を超えていました。

テーブルのINDEXを作成しなおすと、タスクパッドで見るテーブルサイズが
2002128KB になっていました。

恐らくですが、断片化をどうにかしないとこれ以上データの圧縮は
出来ないのではないかと思います。
断片化を直すためにDBCC INDEXDEFRAG, DBCC DBREINDEXも実行しましたが
サイズに変化はありませんでした。

69 :NAME IS NULL:2007/04/27(金) 18:55:46 ID:???
マルチは死ねよ

70 :NAME IS NULL:2007/04/27(金) 19:28:13 ID:???
MSDEの上限サイズは2Gだっけか?

71 :NAME IS NULL:2007/04/27(金) 21:18:54 ID:???
>>67
> データがちりばめられて保存されているということでしょうか?

そうでなくて、ぎっしり詰まっているということ。
だから詰まっているものを消さない限りどうがんばってもファイルサイズは減りません。

データベース ファイルの中にはレコードしか入ってないと思っているようですが、
インデックスなどもオブジェクトとしてデータベース ファイルの中に入っています。
インデックスが容量を使ってるんじゃないですか?

インデックスのサイズはタスク パッドや sp_spaceused で見られます。

72 :NAME IS NULL:2007/04/27(金) 21:32:14 ID:???
>>68
> テーブルのINDEXを作成しなおすと、タスクパッドで見るテーブルサイズが
> 2002128KB になっていました。

2G 使ってるじゃん。テーブル サイズってインデックス サイズの間違いじゃないの?
論理フラグメンテーションの意味わかってる?

それはクラスタ化インデックスなのかとか FILLFACTOR とか解決は遥か遠そうだから、
インデックス消すか、SQL Server 2000 にアップグレードするか、SQL Server 2005 Express に移行したら?

73 :NAME IS NULL:2007/04/28(土) 00:07:31 ID:B3/rVMFc
SQL 難しいよう(泣

74 :NAME IS NULL:2007/04/28(土) 00:41:23 ID:???
SQLの本にオラクルも一緒に載ってるとオラクルが羨ましく感じる(´ω`;)

75 :46:2007/04/28(土) 08:33:08 ID:???
>>71-72
このテーブルには、10秒毎にデータを保存しています。
保存期間は60日です。

テストプログラムで10年分のデータを追加、削除を繰り返しました。
そのときは、約1.6GB からmdfのサイズが増えることはありませんでした。

今、DBの確認ができないため、後でインデックスサイズが容量を使っているのか
を調べてみます。

>>72
私自身、SQL Serverが初心者なためレスして頂いた用語を
一つ一つ調べながら試しています。
論理フラグメンテーション、クラスタ化インデックス、FILLFACTOR は
ヘルプを見ましたが、いまいち理解出来ていません。

MSDE2000から WorkgroupEdition に移行する予定ですが
現状のまま稼動させるとHDDの容量いっぱいまでサイズが増えるかもしれないため
この問題が解決するまで導入が見送られている状態です。

76 :NAME IS NULL:2007/04/28(土) 08:46:43 ID:???
>>75
日付を主キーにすると分布が偏るから再利用されない領域ができますね。
こういう場合はマメに索引の再編が必要になります。
データが増えるとクラスタ化索引の再編は時間もかかるし作業域も使うから、
非クラスタの主キーにするのがおすすめです。
おそらく一度主キーを削除してしまってshrinkして主キーを非クラスタで作り直せばいいと思いますよ。

77 :NAME IS NULL:2007/04/28(土) 10:47:54 ID:???
マルチ先だけでやればいいのに

78 :NAME IS NULL:2007/04/28(土) 10:56:37 ID:???
row_number()っていいね〜
はまちゃったよ
連番と伝票内の連番とか部署切り替えの最後だけ1つけるとか
小計とか帳票のページ替えフラグとかいろいろ使える

79 :NAME IS NULL:2007/04/28(土) 13:39:32 ID:y2Eec+M8
今は CREATE TABLE の勉強中ですっ!

80 :NAME IS NULL:2007/04/28(土) 18:26:23 ID:???
sp_spaceused を実行してテーブルのサイズを調べました。
以下を見ると、インデックスでサイズが大きくなってはいませんでした。
name   : table
rows   : 88649
reserved : 1985736 KB
data   : 307152 KB
index_size: 104 KB
unused  : 1678480 KB

インデックスは次のSQL文で作成しています。
CREATE UNIQUE INDEX [table_idx] ON [table]([datetime]) ON [PRIMARY]

それを削除し次のSQL文でインデックスを作成し直しました。
CREATE CLUSTERED INDEX [cl_table] ON [table]([datetime])

その後に、sp_spaceused を実行すると、unused が少なくなり
タスクパッドでも割り当て済み領域の使用中サイズが 174MB になっていました。
name   : table
rows   : 88649
reserved : 353328 KB
data   : 352520 KB
index_size: 768 KB
unused  : 40 KB

ファイルの圧縮を実行すると、割り当て済み領域が 174MB まで少なくなりました。
MSDE2000では、インデックスの再作成が出来なかったため WorkgroupEdtion で試しています。

インデックスの作成が、理解出来ていなかったようです。
テーブルの作成から勉強しなおします。

レスをして頂き、ほんとうにありがとうございました。
他所でも質問したことはお詫び致します。
申し訳ございませんでした。

81 :46:2007/04/28(土) 18:29:05 ID:???
>>80 は私の書き込みです。

MSDE2000でインデックスの作成が出来なかったのは
データベースサイズの限界2GBを超えてしまうためです。

82 :NAME IS NULL:2007/04/28(土) 19:03:41 ID:???
>>80
そこのindex_sizeはクラスタ索引は含まないんだろうね。

83 :46:2007/04/30(月) 01:32:02 ID:???
>>82
はぁ?

84 :NAME IS NULL:2007/04/30(月) 01:38:02 ID:???
>>83
46のオレオレ詐欺か・・はぁとかふぅとか言うのは池沼の証

85 :46:2007/04/30(月) 09:35:49 ID:???
>>84
ふぅ?

86 :46:2007/04/30(月) 12:09:26 ID:???
ぷぅ

87 :46:2007/04/30(月) 13:02:44 ID:???
ぶぅ〜

88 :NAME IS NULL:2007/04/30(月) 14:42:06 ID:???
ぶりっ

89 :NAME IS NULL:2007/04/30(月) 15:01:26 ID:???
ぶす ↓

90 :KANA:2007/04/30(月) 23:11:26 ID:POoLbNTI
ある項目itemから文字'|'が、X回目に出現するのは何文字目か
検索したい。
oracleだと、
select regexp_instr( item, '|', 1, x ) from Table
で実行できますが、
同様のことをSQL-Serverの関数で行うことは可能でしょうか?

91 :NAME IS NULL:2007/04/30(月) 23:27:45 ID:???
>>90
ない。
2005ならSQLSLRでそういうユーザー関数を自分でつくる。


92 :NAME IS NULL:2007/04/30(月) 23:32:43 ID:???
>>90
まったく同じ機能をもった関数はないので、必要に応じて次の関数群を組み合わせて作る必要があります。

文字列関数 (Transact-SQL)
http://msdn2.microsoft.com/ja-jp/library/ms181984.aspx

CHARINDEX, PATINDEX, SUBSTRING あたりを使うことになるんじゃないかと思います。

93 :NAME IS NULL:2007/05/06(日) 01:12:07 ID:7VodA4wx
総合ということなので 悩んでることでちょっと質問

あるDBのデータを検索する場合
SQL文にLikeなどを使って現在検索しています。
これがいわゆる見出し語検索といわれるものだと思うのですが

もうひとつの手法である全文検索
これの有用性が今一歩理解できません。

どのような時に有効なのでしょうか?

94 :NAME IS NULL:2007/05/06(日) 11:21:09 ID:???
>>93
文書量が膨大になったとき検索が早い。
文書を(単語に)区切ってインデックスが作成されるから。

見出し語検索の like '%foobar%' は超遅い、ということがわからないなら、
このことが理解できるのはもっと先だと思います。

わかるなら、BOL から "フルテキスト検索" をキーワード検索したり、ぐぐったりすればすぐ理解できます。

95 :NAME IS NULL:2007/05/08(火) 01:53:02 ID:???
サーバへの接続ノード数と言うのは、例えばSQLServerに接続する
クライアント側プログラム自作したとして、これも1カウントに入るんですか?


96 :NAME IS NULL:2007/05/08(火) 08:52:33 ID:???
>>95
ライセンスのことが知りたいのか?それともセッション(接続)のことが知りたいのか?
ライセンスなら、MS に問い合わせるべし。

ttp://www.microsoft.com/japan/licensing/contact-us/

97 :NAME IS NULL:2007/05/08(火) 11:37:37 ID:???
セッションの数って決まってるんだっけか?


98 :NAME IS NULL:2007/05/08(火) 12:51:38 ID:???
>>97

@@MAX_CONNECTIONS (Transact-SQL)
http://msdn2.microsoft.com/ja-jp/library/ms179874.aspx

User Connections オプション
http://msdn2.microsoft.com/ja-jp/library/ms187882.aspx

99 :NAME IS NULL:2007/05/08(火) 23:01:13 ID:???
>>98
サンクス。32767までなら余裕でした。

100 :NAME IS NULL:2007/05/08(火) 23:37:10 ID:???
likeで便乗
like 'text%' をユーザーからの要望で
like '%text%' に変更しなければいけない
なんとなく遅くなったらイヤポ

対象文字列をリバースしたテンポラリテーブルを作って
like 'text%' と like 'リバース文字列%' を union させたら
どっちが速いかね〜と机上で考えてる

まぁ実際試せばわかることだけど
他になんか妙案ないかな?

検索対象は nvarchar(10) でインデックスなし、最大10万件くらいのテーブル

とここまで書いてインデックスないからあまり変わらないのかなとオモタ


101 :NAME IS NULL:2007/05/08(火) 23:49:45 ID:???
>>100
>like '%text%'

>like 'text%' と like 'リバース文字列%' を union
が同じにならないのは分かってて言ってるのか?

102 :NAME IS NULL:2007/05/09(水) 15:14:40 ID:wVgHvjRJ
質問です。SQLSERVER 7.0を使用しています。
全体バックアップとトランザクションログを使っての復元で質問です。

例えば全体バックアップを毎日12:00に行ってトランザクションログは
6:00と18:00の2回バックアップを行っていたとする場合、
ある日の22:00の時点で18:00のデータに復元したい場合、

12:00の全体バックアップ+18:00に取ったトランザクションログ

を利用すれば良いと思いますが、トランザクションログの6:00〜12:00までの
ログは今回の復元時には利用されず、自動的に12:00〜18:00までのログが使用され
復元されると言う事で良いのでしょうか?

103 :NAME IS NULL:2007/05/09(水) 21:59:12 ID:???
>>102
任意のログファイルを選択してリストアできる。

104 :NAME IS NULL:2007/05/09(水) 22:34:02 ID:???
>>102
自分は 2000 以降のユーザで、リストア時には RESTORE ステートメントを使うので
何が自動的なのかわかんないんだけど、2000 で Enterprise Manager を使ってバックアップを戻すときは
何がリストアされるかが表示されて、プロパティをみるとそれがいつの完全・差分・トランザクション ログのバックアップか
表示されるよ。そんで >>102 で意図したようになってる。

7.0 でも多分同じだと思うけどなあ。


105 :NAME IS NULL:2007/05/10(木) 14:19:13 ID:V55nTEYq
初心者なのですがご質問してよいですか
DB:MS_SQL_2005
VB6.0

TABLE_A から同じ値のA_CODE内のB_CODEが最大値を持つレコードの
C_CODEの値を取得したい

A_CODE B_CODE C_CODE
11     32    A
11     42    B
11     18    C
12     18    F
12     19    H
12     25    K

      ↓
A_OCDE C_CODE
11      B
12      K

上記の抽出機能を1つのSELECT命令で記述したいのですが
うまく行かないので困っています
お詳しい方のご教授お願い致します

106 :NAME IS NULL:2007/05/10(木) 14:36:43 ID:???
>>105
SELECT A_CODE, C_CODE FROM (
     SELECT A_CODE, B_CODE, C_CODE,
         RANK() OVER (PARTITION BY A_CODE ORDER BY B_CODE DESC) AS RANK FROM yourtable
 ) A
 WHERE RANK = 1 ORDER BY A_CODE


107 :NAME IS NULL:2007/05/10(木) 14:52:30 ID:V55nTEYq
>>106
早々にありがとう御座います!
今スグ試せる時間が無いので後ほどトライします!
ありがとう御座いました!

108 :NAME IS NULL:2007/05/10(木) 18:53:33 ID:nIIPHcZW
>>104
レスありがとうございます。
そうですよね。多分きちんと復元されてますよね。

109 :104:2007/05/10(木) 23:30:39 ID:???
>>108
やってみればいいじゃんとしか言いようが無い。
7.0 は持ってないし今後使う予定も無いのでご自分でどうぞ。

110 :NAME IS NULL:2007/05/12(土) 17:11:30 ID:???
サーバAにセットアップしてあるSQL Server2000 で、
リンクサーバーを使ってサーバBのSQL Server2000
データベースのテーブルを参照したいんだけど、
サーバAのSQL Serverサービス開始アカウントでドメインユーザを
指定せずに、システムアカウントを指定したんだけど、
”SQL Server が存在しないか、アクセスが拒否されました。”
ってエラーになってしまう。
MSドメインのAdministratorsグループに存在しない
アカウントをサーバAのSQL Serverサービス開始アカウントに
設定してみても、やっぱ同じエラーになってしまう。

http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/books/c08ppcsq.mspx
http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/maintain/sp3sec02.mspx
このへんを読んだけど、どうやらうまく資格情報の委任が
出来てないみたい。

サーバAのSQL Serverサービス開始アカウントで
システムアカウントを指定するか、
MSドメインのAdministratorsグループに存在しない
アカウントのどちらかでリンクサーバを設定するには
どうしたらいいでしょう?

111 :NAME IS NULL:2007/05/13(日) 03:21:28 ID:2EQA78C8
質問です。
ASP.NETでSQLSever2005Expを(初めて)使おうと思っているのですが、
ストアドプロシージャに関して思わぬところでハマってしまいました。
どうも、uniqueidentifier型のフィールドをSELECTすると正しい結果が
帰ってこないようなのです。

ALTER PROCEDURE dbo.testproc1
AS
BEGIN

SELECT r.RoleName, r.LoweredRoleName, r.Description
FROM aspnet_Roles r
END
としてVS2005のIDE上で実行すると、
RoleName
----------
A
B
C
D
該当する行はありません。
(4 行が返されました)
と表示されます。(一部抜粋、改変)
ところが、

ALTER PROCEDURE dbo.testproc1
AS
BEGIN

SELECT r.RoleName, r.LoweredRoleName, r.Description, r.RoleId
FROM aspnet_Roles r
END
このようにして、実行したところ、
RoleName
---------
該当する行はありません。
(1 行が返されました)

となってしまいました。

r.RoleIdというのはuniqueidentifier型です。この型の値が
文字として表示できないのならばまだわかりますが、
仮にそうだとしても「4行が返されました」となるはずです。

いろいろ実験してみましたがこの型のフィールドをSELECTすると
どうしても正しい結果が返ってこないようなのです。

何がしたいかというと、WHERE句をさらに使用してこのテーブルで
条件が合致するレコードの一覧をRoleIdも含めて取得したいのです。

(本当は別のテーブルで別の目的で同じようなことをしたいのですが、
それは念のため伏せさせていただきます)

どこが間違っているのか、どこをどうすればよいのか、
どなたかご教授ください。お願いします。

112 :NAME IS NULL:2007/05/13(日) 06:19:44 ID:???
>>111
問題は無いはずだがIDE以外から操作したらどうです?

113 :NAME IS NULL:2007/05/13(日) 06:56:53 ID:???
うっかりGroup byしてるとかw


114 :NAME IS NULL:2007/05/13(日) 11:57:47 ID:HZDMB/aP
超初心者です。CASE文の練習で試しにこんなSQL文を書いてみました。
パラメータが間違っていますとメッセージが出ます。
どのようにすればいいのでしょうか?
SELECT CASE @isuser WHEN 1 THEN 1 ELSE 0 END AS Expr1

115 :NAME IS NULL:2007/05/13(日) 12:39:26 ID:???
>>114
DECLARE @isuser INT
SET @isuser = 123
SELECT CASE @isuser WHEN 1 THEN 1 ELSE 0 END AS Expr1 


116 :NAME IS NULL:2007/05/13(日) 12:44:21 ID:HZDMB/aP
>>115
ありがとうございました。

117 :NAME IS NULL:2007/05/13(日) 13:05:41 ID:???
>>110
説明されている内容はこちらには正しく伝わってこないけど、
セキュリティの問題でつまづいていることはわかりました。

リンク サーバーというのは、リンクしている SQL Server が自身のクライアントからの要求にしたがって、
リンクされているデータベースに対するクエリを実行し、クライアントからはあたかもひとつのデータベースに
対してクエリを実行しているように見せかける仕組みです。
受け取った命令がトランザクションなら、DB をまたがったトランザクションであるため分散トランザクションとして
実行する必要があります。

リンク サーバー プロパティでセキュリティ コンテキストを指定しない場合、
SQL Server はサービス開始アカウントのセキュリティ コンテキストでリンクされているデータベースに
ログオンし、クエリを実行します。ここでサービス開始アカウントにシステムアカウントを指定していると、
SQL Server は SYSTEM (Local System) のセキュリティ コンテキストで実行されます。
Local System という名のとおり、このセキュリティ コンテキストはローカルコンピュータ上では
強い権限をもってますが、リモート コンピュータに対しては何の権限ももっていません。
つまりリモート コンピュータにとっては Anonymous (匿名) ユーザーとして認証します。
この時、普通は匿名ユーザーに SQL Server へのログオンなど許しませんから、
アクセス拒否されて当然です。

ここで通常許される 2 つの選択肢があります。

(1) SQL Server のサービス開始アカウントに、リンクされているデータベースに
ログオンできるアカウントを指定する。

(2) リンク サーバー プロパティで、リンクされているデータベースにログオンできるように
セキュリティを構成する。

>>110 はいま (2) をやろうとして、 "ローカル ログオンとリモート ログオンのマッピング" と
"権限の借用(最近はこれを '偽装' と呼びます)" の意味が理解できないために、
>>110 のやりたい実装(これは私にはわかりませんが)を実現できていないのでしょう。
これを行うには OS とデータベース両方に対するセキュリティの知識が必要です。

(2) を実現する敷居が高いのなら、(1) を採用するというのもひとつの手です。
>>110 を読んだ限りでは、(1) はおそらくできているのでしょう。
(1) の選択肢が存在する理由のひとつに、(2) を行うのが面倒だというのもあるのでしょうし、
(1) の選択肢を取ることそのものは問題ありません。

> サーバAのSQL Serverサービス開始アカウントで
> システムアカウントを指定するか、
> MSドメインのAdministratorsグループに存在しない
> アカウントのどちらかでリンクサーバを設定するには
> どうしたらいいでしょう?

MSドメインって何でしょうか?
"どちらか" の対象となっている 2 つの項目は、対比できるようなものではないでしょう。

> このへんを読んだけど、どうやらうまく資格情報の委任が
> 出来てないみたい。

大抵の場合、偽装が期待通りに実行できてなそうな場合は、ログオンされるコンピュータ、今回の場合は
リンクされる DB サーバーの OS 上でログオン情報を監査するのが最初のステップです。
ちなみにこの文脈で "委任" という言葉を使ってますが、これも正しくない使い方なんじゃないかと思います。

118 :NAME IS NULL:2007/05/13(日) 13:11:03 ID:???
長文乙

119 :NAME IS NULL:2007/05/13(日) 17:47:35 ID:???
>>112
ExecuteReader()などを使ってプログラムから呼び出してみたのですが、
確かに1行は戻ってきています。しかし、すべての項目がNULLとなっています。
(しかもNULL許容に設定してないフィールドがあるにもかかわらず)

ただし、SQL文だけを「SQLブロックのデザイン」や「ビュー」などで
直接実行した場合は正常にグリッドに表示されるようです。
だから余計にわからないのですが。

ストアドプロシージャではuniqueidentifier型のデータは「例外として」
そのまま扱えないということでしょうか?

とりあえず、すでにASP.NETが自動的に作成していたストアドプロシージャを
まねて(4行が該当しました)と出るようにはなったんですが……

120 :111:2007/05/13(日) 17:51:51 ID:???
このようにしてみると何故か「4行該当しました」となりました。
まだプログラムから呼んでみてはいないのでうまくいっているのか確かめられていませんが、
そもそも一体はじめのと何が違うんでしょうか?
ALTER PROCEDURE dbo.testproc1
@PageIndex int,
@PageSize int
AS
BEGIN
-- Set the page bounds
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @TotalRecords int
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
-- Create a temp table TO store the select results
CREATE TABLE #PageIndexForUsers
(
IndexId int IDENTITY (0, 1) NOT NULL,
RoleId uniqueidentifier
)

-- Insert into our temp table
INSERT INTO #PageIndexForUsers (RoleId)
SELECT r.RoleId
FROM dbo.aspnet_Roles r
ORDER BY r.RoleName

SELECT @TotalRecords = @@ROWCOUNT

SELECT r.RoleId
FROM dbo.aspnet_Roles r, #PageIndexForUsers p
WHERE p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound
ORDER BY r.RoleName
RETURN @TotalRecords
END

121 :111:2007/05/13(日) 19:26:58 ID:???
やはりこれでもIDを含むとだめですね……

122 :NAME IS NULL:2007/05/13(日) 22:02:09 ID:???
>>120
>FROM dbo.aspnet_Roles r, #PageIndexForUsers p 
>WHERE p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound 

dbo.aspnet_Roles と #PageIndexForUsers の結合条件が欠けてるような。
意図してるのはRoleIdでの自然結合だろうか。そうはなってないけど。

123 :111:2007/05/14(月) 00:20:18 ID:???
たぶんどこか抜けていると思います。
すでに自動生成されているストアドプロシージャの文字を変えた程度のことしかやってませんから。
ASP.NET側の機能にRoleIdを取得して云々というのはもともとない(ストアドで済ましている)
ようなので、UserIdを含めてユーザー情報の一覧を取得しているストアドプロシージャを参考
に(コピペ)して作りました。これでもうまくはいかないですが……

とりあえずIdを取得をしなくても処理ができるようにプログラムを設計しなおした
ほうが早いですかねぇ……

124 :110:2007/05/14(月) 11:24:45 ID:???
>>117
長文ありがとうございます。

> > サーバAのSQL Serverサービス開始アカウントで
> > システムアカウントを指定するか、
> > MSドメインのAdministratorsグループに存在しない
> > アカウントのどちらかでリンクサーバを設定するには
> > どうしたらいいでしょう?

> MSドメインって何でしょうか?
> "どちらか" の対象となっている 2 つの項目は、対比できるようなものではないでしょう。

MSドメインとは、ActiveDirectoryドメインのことでした。
WindowsNTの頃はマイクロソフトドメンとか言われてたので... ついつい古い用語が
出てしまいます。

> 大抵の場合、偽装が期待通りに実行できてなそうな場合は、ログオンされるコンピュータ、今回の場合は
> リンクされる DB サーバーの OS 上でログオン情報を監査するのが最初のステップです。

SQLサーバへのログオンなので、OSのログオン情報が必要とは思ってもなかったです。
ってことはWindows認証を使う場合、
1.OSへのログオン
2.SQLサーバへのログオン
って順番でログオンされるって事でしょうか。

SQLサーバのログオン監査レベルが”なし”になっていたので、”失敗”に変更して
試してみます。


125 :NAME IS NULL:2007/05/14(月) 11:27:30 ID:???
>>111
"uniqueidentifier型のフィールドをSELECTすると期待したものと異なる結果が返される" という問題の定義は正確ではないと思います。
次のようなテスト スクリプトは私の環境では予想通り正しく実行されました。
私の環境は Build: 9.00.3159.00 で、OS は Windows Server 2003 SP1 です。
>>111 さんご自身の DB で次のテスト スクリプトでも問題がおきるようならば、SP や hotfix をインストールすることで問題が解決するかもしれません。

-- テーブルを作成する
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tblUID](
[UID] [uniqueidentifier] NOT NULL,
[createdate] [datetime] NULL,
CONSTRAINT [PK_tblUID] PRIMARY KEY CLUSTERED
(
[UID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

-- テスト用のデータを準備する
declare @@i as int
set @@i = 0
WHILE @@i<10
BEGIN
insert into tblUID select NEWID(), GETDATE()
set @@i = @@i + 1
END

-- sp 作成: いくつかの方法で SELECT してみる
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE sp_test
AS
BEGIN
select t.* from tblUID t
select t.createdate from tblUID t
select t.UID from tblUID t
select t.UID, t.createdate from tblUID t
END
GO

-- sp を実行してみる
EXEC sp_test

-- sp を削除する
DROP PROCEDURE sp_test
-- テーブルを削除する
DROP TABLE [dbo].[tblUID]


126 :111:2007/05/14(月) 12:11:54 ID:???
ありがとうございます。
sqlcmdで実行してみました。
確かにこのスクリプトだと問題なく実行できているようですね……

SQLServerの時点では正しく処理されているということでしょうか。
ASP.NETの内部処理も正常に処理されているので、疑うべきは自分の書いた
部分だとは思うんですが、それがサッパリわかりません。

もしくはVSが自動で設定してくれたデータベースの設定が逆に悪さを
しているとも考えられることは考えられそうですが。

ためしに後で、Roleのデータが入ったデータベースファイルをアタッチして
実験してみます。

127 :104:2007/05/14(月) 14:21:16 ID:???
だれか俺のアナルに指をいれてくだし

128 :NAME IS NULL:2007/05/15(火) 13:32:27 ID:???
INSERT INTO 104

129 :NAME IS NULL:2007/05/15(火) 14:13:17 ID:???
(ANAL) VALUES (YUBI)

130 :110:2007/05/15(火) 15:12:42 ID:???
>>117 ・ALL

リンク先SQLサーバのログオン監査レベルを”失敗”に変更してみましたが、
イベントビューア・SQL Serverログの両方ともログオン失敗のログが出ていませんでした。

OSへのログオン情報を見てみようと、イベントビューアのセキュリティを見てみると、
どうやらANONYMOUS LOGONをしているみたいです。
ネットワーク ログオンの成功:
ユーザー名:
ドメイン:
ログオン ID: (0x0,0xACA6AF0)
ログオンの種類: 3
ログオン プロセス: NtLmSsp
認証パッケージ: NTLM
ワークステーション名: リンク元サーバ名
ログオン GUID: -
呼び出し側ユーザー名: -
呼び出し側ドメイン: -
呼び出し側ログオン ID: -
呼び出し側プロセス ID: -
移行されたサービス: -
ソース ネットワーク アドレス: リンク元サーバIP
ソース ポート: 0

何でANONYMOUS LOGONなんだろ?


リンク元DBのリンクサーバのプロパティ情報・セキュリティタブには、
リンク先DBへのユーザ名マッピングがあるんですが、Windows認証の時は
ここはどういう扱いになるんでしょう?

クエリアナライザ起動時に、Windows認証でリンクテーブルを参照すると
認証エラーになってしまいます。
ユーザ名を指定してクエリアナライザを起動してリンクテーブルを参照すると、
今度は大丈夫なんです。

あー、なんか敷居が高いなぁ。。。


131 :NAME IS NULL:2007/05/15(火) 23:00:32 ID:???
>>130
リンク先のコンピュータも Windows なんだよな?
リンクサーバーってリンク先が Windows で SQL Server とは限らないんで、
ちゃんとリンク先は Windows で SQL Server xxxx だっていわないとダメよ。

> リンク元DBのリンクサーバのプロパティ情報・セキュリティタブには、
> リンク先DBへのユーザ名マッピングがあるんですが、Windows認証の時は
> ここはどういう扱いになるんでしょう?

そりゃローカル ログインに DB のユーザーを指定して、
リモート ユーザーにはリンク先のデータベースにログオンするユーザーを
指定するに決まってるべ。自分が挙げたリンクに書いてあるだろ?

> クエリアナライザ起動時に、Windows認証でリンクテーブルを参照すると
> 認証エラーになってしまいます。
> ユーザ名を指定してクエリアナライザを起動してリンクテーブルを参照すると、
> 今度は大丈夫なんです。

ユーザー名を指定して、ってのは「SQL 認証で」って意味だよな?
どうせ sa を指定してて、sa のパスワードはリンク元とリンク先のインスタンスで同じなんだろ。

ログインマッピングを全部消して、[次のセキュリティ コンテキストを使用する] を選んで、
リモート ログインとパスワードにリンク先 DB にログオンできる SQL 認証のユーザーを
指定してみ?そんで、Windows 認証でリンク元 DB に対してリンク サーバーのテーブルを
FROM 句に含んだクエリを実行する。

132 :110:2007/05/16(水) 12:49:57 ID:???
>>131

>> リンク元DBのリンクサーバのプロパティ情報・セキュリティタブには、
>> リンク先DBへのユーザ名マッピングがあるんですが、Windows認証の時は
>> ここはどういう扱いになるんでしょう?

> そりゃローカル ログインに DB のユーザーを指定して、
> リモート ユーザーにはリンク先のデータベースにログオンするユーザーを
> 指定するに決まってるべ。自分が挙げたリンクに書いてあるだろ?

DBのユーザって言うのは、SQL Serverのサーバを起動しているサービスのユーザですか?
それとも、クライアントからWindows認証で認証しているクライアントのログオン名ですか?
SQL Serverのサーバを起動しているサービスのユーザであるとすると、
サービスを起動するユーザは一つしかないので、複数ログオン情報を入力できる訳が
わからないです。
クライアントのWindowsログオン名だとすると、ドメイン名\ユーザ名でローカルユーザを
入力してOKボタンを押し、もう一度プロパティを開くと、ユーザ名が消えてしまいます。

> ログインマッピングを全部消して、[次のセキュリティ コンテキストを使用する] を選んで、
> リモート ログインとパスワードにリンク先 DB にログオンできる SQL 認証のユーザーを
> 指定してみ?そんで、Windows 認証でリンク元 DB に対してリンク サーバーのテーブルを
> FROM 句に含んだクエリを実行する。

クエリアナライザをSQL認証 sa でログオンすると、確かに実行できますが、
やはりWindows認証でログオンすると、認証エラーになってしまいます。

http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/maintain/sp3sec01.mspx
ここも見てるんですが、なかなか全部理解できないっす。


133 :NAME IS NULL:2007/05/16(水) 22:58:34 ID:???
>>132
> なかなか全部理解できないっす。

そりゃそうだ。四則演算もできないのに微積分やってるようなもんだからな。
『SQL Server 2000 でいってみよう』 から始めて、SQL Server 2000 自習書シリーズくらいやっとけ。

> クエリアナライザをSQL認証 sa でログオンすると、確かに実行できますが、
> やはりWindows認証でログオンすると、認証エラーになってしまいます。

そいつはおかしいわ。
んじゃ、リンク先ユーザーに linkedserveruser みたいなアカウントを作って
ターゲット テーブルの SELECT 権限を与えて、「リモート ログインとパスワードに
リンク先 DB にログオンできる SQL 認証のユーザー」 としてその linkedserveruser を指定する。
その他の設定は >>131 で書いたのと同じだ。
次に、SQL プロファイラでリンク先 DB のトレースを取りながら、リンク元 DB に sa でログオンして
分散クエリを実行する。この時プロファイラの LoginName 列に誰が DB にログオンしてきたか記録される。
linkedserveruser でログオンしてきてたら OK だ。sa でログオンしてきたら設定が間違ってる。
最後に、Windows 認証でリンク元 DB に対して分散クエリを実行する。
設定が >>131 の通りなら、この時もリンク先 DB に linkedserveruser でログオンしてくる。
分散クエリは期待した結果を返す。

これでダメなら、次をさらすこと。

1 リンク元、リンク先サーバーの OS の種類とバージョン
2 上の手順のどこでどのように期待しているのと違う動作をしたか
3 クエリアナライザに表示されたエラーのコピペ
4 エラーが出たときにイベントビューアにエラーが出てたらそれのコピペ

134 :NAME IS NULL:2007/05/16(水) 23:22:40 ID:???
>>110
もうMSに直接聞いたほうが早いんじゃないのか?
サポートの値段と自分の人件費、どっちが高いやら
http://www.microsoft.com/japan/microsoftservices/support/professional.mspx

135 :NAME IS NULL:2007/05/16(水) 23:26:30 ID:???
基本的な事なんですが
OSとDBファイルは物理ディスク分けたほうがいいのかな?
w2003sv SQL2005
今は同じディスクでミラーリングしとるんですが
分けてミラーするかこまめにトランザクションログとるか迷ってます
劇的に改善するのかな〜
先人の意見求む!
DBは今カットオーバー1.5ヶ月で250Mっす


136 :NAME IS NULL:2007/05/17(木) 17:22:20 ID:???
>>133 レスありがとうございます。

うーん、なんというか... 動く時と動かない時があって、原因がまだはっきり分からないっす。

> 1 リンク元、リンク先サーバーの OS の種類とバージョン
リンク元 Windows2000sv SP4 SQL Server 2000 SP4
リンク先 Windows2003sv SP1 SQL Server 2000 SP4

> 2 上の手順のどこでどのように期待しているのと違う動作をしたか

> 次に、SQL プロファイラでリンク先 DB のトレースを取りながら、リンク元 DB に sa でログオンして
> 分散クエリを実行する。この時プロファイラの LoginName 列に誰が DB にログオンしてきたか記録される。
> linkedserveruser でログオンしてきてたら OK だ。sa でログオンしてきたら設定が間違ってる。
> 最後に、Windows 認証でリンク元 DB に対して分散クエリを実行する。
> 設定が >>131 の通りなら、この時もリンク先 DB に linkedserveruser でログオンしてくる。
> 分散クエリは期待した結果を返す。

この順番で時間をおかず、処理を試すとすべてOKです。
ですが、30分くらい時間をおいてから

> 最後に、Windows 認証でリンク元 DB に対して分散クエリを実行する。
> 設定が >>131 の通りなら、この時もリンク先 DB に linkedserveruser でログオンしてくる。
> 分散クエリは期待した結果を返す。

ここから実行しようとすると、
Windows認証でクエリアナライザを起動し、リンクテーブルを開こうとした時に

”[Microsoft][Odbc SQL Server Driver][SQL Server][DBNETLIB][ConnectionOpen (Connect().]SQL Server が
存在しないか、アクセスが拒否されました。”

のエラーメッセージが表示されます。
このときのイベントビューアには、
”18453 :ユーザー 'リンク先サーバ名\Administrator' のログインに成功しました。接続 : 信頼関係。”
のメッセージが表示されます。

> 次に、SQL プロファイラでリンク先 DB のトレースを取りながら、リンク元 DB に sa でログオンして
> 分散クエリを実行する。この時プロファイラの LoginName 列に誰が DB にログオンしてきたか記録される。
> linkedserveruser でログオンしてきてたら OK だ。sa でログオンしてきたら設定が間違ってる。

このタイミングでは、イベントビューアには
”18454 :ユーザー 'linkedserveruser' のログインに成功しました。接続 : 非信頼関係。”

その後すぐ

> 最後に、Windows 認証でリンク元 DB に対して分散クエリを実行する。
> 設定が >>131 の通りなら、この時もリンク先 DB に linkedserveruser でログオンしてくる。

を実行すると、イベントビューアには
”18453 :ユーザー 'リンク先サーバ名\Administrator' のログインに成功しました。接続 : 信頼関係。”
のメッセージです。

なぜ、時間をおかずに処理を流すとうまく動くのでしょう?
sa でログオンして処理を流し、クエリアナライザを再起動してWindows認証でログオンしなおしてるのに...

Windows認証で実行すると、 なぜ 'リンク先サーバ名\Administrator' になるんでしょう?
処理を実行しているクライアントは、ドメイン名\別のログイン名 でログインしてるのに。。。




137 :NAME IS NULL:2007/05/17(木) 17:25:37 ID:???
基本的なことなんですが、SQLServerは

138 :110:2007/05/17(木) 17:31:25 ID:???
>>136 の書き込みも110 です。

プロファイラの情報ですが、
Windows認証の場合は
NTUserName: Administrator
LoginName: ドメイン名\Administrator

のログイン情報でした。

sa を使い、SQL認証にすると

NTUserName: リンク元SQLサービス開始用ドメインユーザ
LoginName: linkedserveruser

になります。時間をおかずにWindows認証で処理をした時は

NTUserName: Administrator
LoginName: ドメイン名\Administrator

と、時間をおいて動かなかった時と同じログイン名です。


139 :NAME IS NULL:2007/05/17(木) 21:21:32 ID:kOFxK65C
SQLど素人の者です。
プログラム技術板と重複してしまいますが
質問させてください 。

SQL SERVER2000のストアドについてですが、
ストアドの再コンパイルが必要
(しなければ動作がおかしくなる等)
となる時はどんな時なのでしょうか?

同じデータ&ストアドを使用しているのにも関わらず、
あるマシンでは通常通り正しい結果を抽出できたのですが、
別のマシンではエラーとなり抽出ができない状態が発生しました。

色々試した結果、
ストアドの再コンパイルを行ったところ、
現象は解消され、正しい結果を抽出することができたのですが・・・




140 :NAME IS NULL:2007/05/17(木) 22:33:03 ID:???
>>139
へえ。
で、なんてエラーが出たの?
どうして再コンパイルしようと思ったの?

普通は再コンパイルで解決するのはエラーでなくパフォーマンスの問題。

ストアド プロシージャの再コンパイルのトラブルシューティング
http://support.microsoft.com/kb/243586/ja

141 :NAME IS NULL:2007/05/17(木) 23:26:30 ID:???
>>138
>>131 + >>133 は、「どんなユーザーで SQL Server にアクセスしてこようが、
リンク先サーバーには linkedserveruser でログインしてクエリを実行する」 ことを
意図していることはわかってるよな?(書き込みを読むとその時点から理解できてないように読める)
つーことは、アクセスできようができまいが、Windows 認証を使っている時に
linkedserveruser でないユーザーでリンク先にログオンしてること自体が「意図したのと違う」結果なんだよ。

で、"ドメイン名\別のログイン名" として SQL Server にログオンしてるのに、リンク元 SQL Server によるリンク先へのアクセスが
勝手にドメインの Administrator になっちまう(プロファイラによると)ってのがワカンネ。そういう動きをするようにどっかで設定してるんだろうな。
しかもそれがドメインのじゃなくてリンク先サーバーへのローカル Administrator として監査されてる(イベント ログによると)ってのもワカンネ。
矛盾しまくりだな。

オレはログインマッピングを全部消してないと思う。

この動きは kerberos による委任の動作とも違うし、そういう動きをするようにどっかで設定してるとしか思えねー。
しかもそんな設定ができるのはログインマッピングだけだし。


142 :NAME IS NULL:2007/05/17(木) 23:54:10 ID:???
>>135
> OSとDBファイルは物理ディスク分けたほうがいいのかな?
物理ディスクが複数あるなら負荷を分散したほうが早いのは当然です
ページングファイルは容量を固定してデフラグする
データベースファイルとトランザクションログを複数の物理ディスクに分散させる
特にユーザーデータベースとそれからtempdbも分散させる

> w2003sv SQL2005
> 今は同じディスクでミラーリングしとるんですが
まぎらわしいな。RAID1のことか?

> 劇的に改善するのかな〜
ディスクI/OがTATのボトルネックになってるならね
だからまずはそれを調べることですね

SQL Server 2005 でのパフォーマンス問題のトラブルシューティング I/O ボトルネック
http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/tsprfprb.mspx#EHUAE


143 :NAME IS NULL:2007/05/18(金) 10:22:42 ID:xq5zC4h3
>>140
正確に申し上げると、
エラーになってしまう要因は別にあり、
ストアド内からあるユーザー定義関数を実行すると
特定のパラメータ(コード600200)の時にだけ桁あぶれをしてしまい
エラーとなってしまうというものです。

全く同じDBで全く同じSQL文(ストアド)で全く同じパラメータ(コードを3017)による実行
を行った場合、あるマシンでは3017のみを対象としてそのユーザー定義関数を実行するのですが、別のマシンですと全てのコードを対象にしてのユーザー定義関数を実行してしまう
という状態になっておりました。

データもストアドもパラメータも同じであるのに、マシンにより、動作が異なってしまう
状況であった為、ストアドの再コンパイルを行ってみたところ、現象が解消された
次第です

144 :NAME IS NULL:2007/05/18(金) 22:17:36 ID:???
>>143
よくわかんないけど。

桁あぶれってのは算術オーバーフローのことですよね。
そしてそのエラーが起きる原因は WHERE 条件をつけてるのに、その条件による抽出が行われないって事ですよね。

再コンパイルってのは
・sp_recompile <プロシージャ名> を実行する
もしくは
・ストアドプロシージャの定義に WITH RECOMPILE オプションをつける
のどちらかをやったってことですよね。

再コンパイルってのはクエリの実行プランを再作成するってことです。
拾ってくるデータ(レコードなど)は変わりません。内部的な処理方法が変わるってことです。
インデックスや統計情報、あるいはレコードが変わったときには別の実行プランでクエリを実行したほうが早いときがあります。

いまだになんでその問題に対して再コンパイルで対応しようと思ったのか理解できない。
別のことをやったのに [再コンパイル] と表現しているのでは?
もしくは再コンパイル以外に行ったことがその問題を解決したのでは?

ストアド プロシージャの再コンパイル
http://msdn.microsoft.com/library/ja/createdb/cm_8_des_07_6cmd.asp

145 :NAME IS NULL:2007/05/18(金) 22:27:27 ID:???
>>142
ありがとうございます
熟読してみます
現在はRAID1にOS,スワップ,DB全部入りになってます
メモリ4GでDBが200M程度なんで全部メモリに入ってそう
とりあえずtmpdbだけでも分けて調査してみます


146 :NAME IS NULL:2007/05/18(金) 22:43:34 ID:???
ふつー再コンパイルするのはその SP にからむテーブルのインデックスを変更したときだな。
必要になったことはないけど。

147 :NAME IS NULL:2007/05/18(金) 22:53:29 ID:???
>>145
調べる余裕があるならこれも見といたほうがいいな

SQL Server 2000 チューニング全工程
http://www.atmarkit.co.jp/fdb/index/index-db.html#tunesqls

Dr. K's SQL Serverチューニング研修
http://www.atmarkit.co.jp/fdb/index/index-db.html#drk

2005じゃなくて2000だけど、原理はかわらない
うちはまだ2000がほとんどなんで2005の資料はあまり読んでないが
2005をベースに書かれてるものも探せばあるかも


148 :NAME IS NULL:2007/05/20(日) 21:37:31 ID:yUdiSxWy
accessとSQlserverって何が違うんですか?

149 :NAME IS NULL:2007/05/20(日) 21:38:43 ID:???
値段です

150 :NAME IS NULL:2007/05/20(日) 21:56:59 ID:???
名前です

151 :NAME IS NULL:2007/05/20(日) 22:16:42 ID:???
南春男でございます

152 :NAME IS NULL:2007/05/21(月) 20:35:28 ID:???
>>148
非常におおざっぱだけど、

・Access
シングルユーザーのデータベースシステム + データベースを操作するクライアントアプリケーション作成ツール

・SQL Server
マルチユーザーのデータベースシステム(エンジンのみ)


SQL Server をデータベースとして使って、Access でクライアントを作成することもできる。



153 :NAME IS NULL:2007/05/23(水) 15:29:58 ID:???
SQL Server 2005買ってもらったんで喜々としてインストールしたんだけど、
Access2000 で作ったADPで不具合でまくり。もしかしてサポート対象外ですか?
教えてください。

154 :NAME IS NULL:2007/05/23(水) 16:45:04 ID:???
>>153
です

155 :NAME IS NULL:2007/05/23(水) 16:50:15 ID:???
>>153
Access 2000 のメインストリーム サポートは 2004 年で終わってる。
http://support.microsoft.com/lifecycle/?c1=505

だからこれを額面どおりに受け止めれば SQL Server 2005 は Access 2000 から使われるように
設計されてもいないし、テストもされていないと考えることもできる。
しかし経験上、実際は多分普通に使うことはできる。

"不具合でまくり" と一言で言われても、その一つ一つの内容がわからないので、
これ以上はコメントできません。


156 :NAME IS NULL:2007/05/23(水) 17:04:20 ID:???
>>155
けち

157 :153:2007/05/23(水) 17:43:45 ID:???
レスサンクスです。
サーバのローカルではAccess2000のADPで作ったものは
しっかりと動いているのですが、リモートだと結果のレコードセットの取得に
失敗しているようです。接続拒否られます。

インストール時に選択する認証モードのせいかもしれないと思い、
混合モードにして、アカウントもSQL Serverのアカウントにして
試してみましたが同様の結果でした。それでもローカルだとしっかり動く。謎だ。

不確定要素が他にもいくつかあるので、自分なりに切り分けて、もう少しやってみます。


158 :153:2007/05/23(水) 18:45:44 ID:???
無理でした。
心が折れました。もうだめぽ。

159 :NAME IS NULL:2007/05/23(水) 19:03:37 ID:???
>>158
おまえがばかなだけじゃん

160 :NAME IS NULL:2007/05/23(水) 19:57:21 ID:???
>>157
SQL Server 2005 はデフォルトではネットワークからのアクセスを拒否するようになってますよ。

SQL Server 2005 Tips and Tips
第 1 回 ネットワーク接続を有効化しよう
http://www.microsoft.com/japan/sql/ssj/tips/01.mspx

161 :NAME IS NULL:2007/05/23(水) 20:56:37 ID:nhV28SRP
<<152
ありがとうございます。返事が遅れてすみません。

SQLserverでよさそうですね。その方向で勉強してみます。


162 :153:2007/05/24(木) 10:10:39 ID:???
>>160
神光臨!
まさしくそれでした。ありがとうございました。

仮想コンピュータ上でですが、ACCESS2000のADPが問題なく動作
することを確認しました。

163 :NAME IS NULL:2007/05/24(木) 20:56:14 ID:???
>>162
お前…鯖2005のインストール終了した時に出るダイアログとかちゃんと読まなかったな?w

164 :NAME IS NULL:2007/05/25(金) 09:52:26 ID:OK4pQseG
質問があります。
今、Access2000(adp:クライアント)+SQLExpress2005(サーバー)で、
仮称:注文管理システムを構築してます。
問題になっているテーブルですが、仮称で、
番号テーブル:A
Aの中の列:a(注文番号)、int、NotNull
注文テーブル:B
Bの中の列:b(注文番号)、int、NotNull、Primary(Key) とします。

aには、値2が入っているとします。
やりたいことは、
@.aの値をbにセットする。
A.aを1インクリメントして更新する。
という単純なロジックです。

そこで問題が出てしまったのですが、事前確認として、
テーブルAのaには2がセットされています。
Accessからみても、ManagementStudioからみても
2がセットされています。
1.SQLでAからa(注文番号)を取得
2.aをテーブルBのb列(注文番号)にセット
3.aを1インクリメントする
4.SQLでAをUpdateする
をやったのですが、aにセットされていた2がbにセットされず、
実行するたびに、7,8,9,10・・・とAccessのオートナンバー型のように
勝手にカウントアップされてしまいます。
因みに、SQLServerはAccessのアップサイジングウィザードで作成しましたが、
オートナンバー型の列は一つもありません。
どうすればこの問題を解決できるのか是非御享受ください。お願いします。

165 :続き:2007/05/25(金) 09:56:06 ID:OK4pQseG
7,8,9,10・・・とカウントアップされてしまうのは、SQLでaを取得した時に、2ではなく
増分値になっているところまではつきとめました。aフィールドに何か問題があるのかなと
思いました。 以上、よろしくお願い致します。

166 :NAME IS NULL:2007/05/25(金) 16:10:15 ID:???
>>164-165
ねえ、それで君の困ってる内容や、どうしたいかが僕に伝わると思う?


167 :NAME IS NULL:2007/05/25(金) 16:31:10 ID:???
まずこの2つのうちどっちができないんだ?

@.aの値をbにセットする。
A.aを1インクリメントして更新する。

できないとしたら、どうなってほしいのにどうなってしまうんだ?
とりあえず 1 はできないだろ、だってテーブル B を UPDATE してないしな。
2 の方はオートナンバー型のようにカウントアップされてるんだから、できてるんだろうな。

Access とか言ってるから、SQL Server というより、VBA とか ADO について聞いてるのか?

168 :164-165:2007/05/25(金) 17:29:36 ID:UcPHyeKn
>>167レスありがとうございます。
>>167のAができません。 VBA・ADOは使っていますが、
SQLにセットされている値とSELECTした時の値が異なっており、
さらに後者については実行都度1ずつインクリメントされてしまいます。
この理由がわからないのです。
よろしくお願い致します。


169 :NAME IS NULL:2007/05/25(金) 19:57:00 ID:???
さっぱり判らんけど、Recordsetに値代入しても鯖のデータは変わんないし、
鯖のデータUpdateしてもRecordsetは自動更新されないよ。
(つうかもうADO忘れた。鯖2005+ADO.Net2.0ではデータ更新イベントを受け取れるらしいが。)

170 :NAME IS NULL:2007/05/25(金) 20:30:18 ID:???
さっぱりわからん。説明が下手すぎ。
いちいち質疑応答するのかったるいんで、とりあえずプロファイラしかけて
VBA をデバッグ実行したら?どの VBA の行で SQL Server に UPDATE 文が
飛んできてるかわかるだろうよ。

171 :NAME IS NULL:2007/05/26(土) 11:17:08 ID:???
最初:a=2
実行:b=a, a+=1; b=2, a=3
実行:b=a, a+=1; b=3, a=4
実行:b=a, a+=1; b=4, a=5
となるのは当然だと思うけど。

172 :NAME IS NULL:2007/05/26(土) 11:35:59 ID:???
SQLServer2005での質問なんですが、

ローカルパブリケーションを削除し、新規作成したところ、「ストアドプロシージャ '' が見つかりません」と表示され
パブリケーションに失敗してしまいました。再起動すれば治るかもという安易な考えからSQLServerを再起動させたところ、
EnterpriseManager(ServerManagementStudio)から管理できなくなってしまいました(エラーがでてログインできない)。

---------------------
サーバとの接続を正常に確立しましたが、ログイン前のハンドシェイク中にエラーが発生しました。
(Provider: 共有メモリプロバイダ, error:0 - パイプの他端にプロセスがありません。)
---------------------

いろいろ弄ったのですが原因がわからず、仕方なしにアンインストール→インストールを行いましたが
同じようなエラーが表示されてインストールできませんでした。

---------------------
SQL Serverセットアップは、サーバ構成のデータベースサービスに接続できませんでした。
エラー:[Microsoft][SQL Native Client]共有メモリ プロバイダ:パイプの他端にプロセスがありません。
---------------------

まったく原因がわからず困っています。
本番機へ移項前にテスト機で上記のエラーがでてしまったので、本番機へ移項することができません。
宜しくお願いします。

173 :NAME IS NULL:2007/05/26(土) 12:24:47 ID:???
Microsoft SQL Server 2005 用 Feature Pack- 2007 年 2 月
http://www.microsoft.com/downloads/details.aspx?FamilyID=50b97994-8453-4998-8226-fa42ec403d17&DisplayLang=ja
公開された日付 : 2007/05/25

174 :164-165:2007/05/26(土) 12:36:09 ID:tHOS56YV
文才がなくてすみませんでした。
SELECTすると、列の値と異なる値(インクリメントされた値)を取得してしまう
というおかしな現象が発生しているんです。
なんとかまた自己解決にチャレンジします。

175 :NAME IS NULL:2007/05/26(土) 17:22:06 ID:???
>>174
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

ってSQLを、ADOだろうと何だろうと一番最初に打ってみ。

176 :164-165:2007/05/26(土) 18:42:10 ID:/8NdDjJH
>>175
ありがとうございました

177 :NAME IS NULL:2007/05/26(土) 20:59:28 ID:???
>>172
パイプの他端にプロセスがない場合のトラブルシューティング
http://msdn2.microsoft.com/ja-jp/library/ms175496.aspx


>>174
文才がない、と表現してしまうところに恐怖すら感じた。


178 :NAME IS NULL:2007/05/27(日) 22:02:43 ID:???
うちもパブリケーションで質問です。
新しくパブリケーションを発行しようとするとエラーがでます。

SQL Serverで、パブリケーション'test'を作成できませんでした。

追加情報:
 Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。
 (Microsoft.SqlServer.ConnectionInfo)
  ストアドプロシージャ ''が見つかりませんでした。
  ストアドプロシージャ ''が見つかりませんでした。
  データベースコンテキストが'testdb'に変更されました。(Microsoft SQL Server、エラー:2812)

SQL Serve 2005です。

179 :NAME IS NULL:2007/05/27(日) 22:30:10 ID:UJQa1vuC
express edition だと、エクセルファイルやCSVファイルのインポートはできないのですか?

180 :NAME IS NULL:2007/05/28(月) 01:34:43 ID:???
質問です。
SQLServer2000にPHPからlocalhostで接続しようとしてるのですが、
Fatal error: Call to undefined function mssql_connect()
サーバ名をlocalhostやIPアドレス、直接サーバ名を入れたりしたけど
ダメでした。
また、別の環境でMSDE2000を使いPHPからlocalhost接続しようとしましたが、
やはりダメでした。
CSEやエンタープライズマネージャなどを使えば繋がってくれるのですが・・・

エロスの方教えてください。

181 :NAME IS NULL:2007/05/28(月) 09:13:27 ID:???
>>179
CSV は BCP コマンドを使ってできるが、Excel は BI 系ツールがついてないのでできない。
Excel のインポートは 2000 の DTS を使ってもできるので、2000 を持ってるならそれでやればいい。

182 :NAME IS NULL:2007/05/28(月) 09:17:06 ID:???
>>180
> Fatal error: Call to undefined function mssql_connect()
と出てることから、SQL Server の問題ではない。
SQL Server に接続するための関数 mssql_connect が呼ばれたけど、そんな関数ないよと言っている。
DB に接続するための PHP のライブラリが正しくインストールされていないと思う。

183 :NAME IS NULL:2007/05/28(月) 09:18:04 ID:???
>>178
sa または DB サーバーの Administrator でログインしてやってみるといいかも

184 :NAME IS NULL:2007/05/28(月) 11:32:36 ID:???
>>183
Administratorでログインしてやっているんですが。
原因がわからずです。

185 :NAME IS NULL:2007/05/28(月) 12:12:31 ID:nux3andD
>>182
アドバイスありがとうございます。
ライブラリは入ってると思います(リモートサーバーには何故か問題なく
接続できるのです^^;)

186 :NAME IS NULL:2007/05/28(月) 12:30:51 ID:???
>>185
そうですか。リモートサーバーに接続する時は mssql_connect() を使っていないということはありませんか?
私は PHP は使わないのでよく知りませんが。
どちらにせよ直接的に問題を解決したいならプログラムから mssql_connect() を参照できるようにするしかありませんね。
もしくはローカルとして指定するのではなくて、コンピュータ名で指定するとか。

187 :NAME IS NULL:2007/05/28(月) 12:37:51 ID:???
>>184
原因はデータベースの sys.sp_addpublication を呼び出したが、そのストアドプロシージャがみつからないか
sp_addpublication の中で呼ばれる SP が見つからないか、でしょう。
変だな、と思うのはエラーメッセージの sp 名がブランクであることです。
普通はここには SP の名前が入るはずです。
(ためしに存在しない SP を exec してみるとわかります)

sp_addpublication は sysadmin/db_owner でないと呼び出せないので、まずセキュリティの問題を疑いました。
セキュリティの問題でないのならば、データベースの SP が壊れているのかもしれないのですが、これ以上は確実なことはわかりません。

この手のエラーならイベント ビューアにログが出ているでしょうから、そのメッセージでぐぐったりして調べるしかないと思います。

188 :NAME IS NULL:2007/05/28(月) 13:44:12 ID:???
>>187
レスありがとうございます。
いろいろ試したりしたのですが、いまいちよくわかりません。
ただ、もとの原因となったであろう行動は特定できたので、報告します。

古いサーバ上のデータベースをデタッチしたものを、新しくたてたサーバにアタッチしたのですが
その際に、古いサーバのサブスクリプション情報も新しいサーバに渡されたようです。

古いサーバ
+レプリケーション
 +ローカルパブリケーション
  +[testdb]: [test]
 +ローカルレプリケーション
  +[testdb2] - [oldserver].[testdb]: [test]

となっていたものをデタッチ→アタッチすると

新しいサーバ
+レプリケーション
 +ローカルパブリケーション
  
 +ローカルレプリケーション
  +[testdb2] - [oldserver].[testdb]: [test]

となりました。 
ローカルパブリケーションを新しく作成しようとした際に、>>178のエラーが表示されました。
いろいろ試した結果、データベースのデタッチ→アタッチではなく、データのコピーのみを行うことによって
ちゃんとパブリケーションを作成することができました。

189 :NAME IS NULL:2007/05/28(月) 16:01:45 ID:???
>>188
ああ、なるほど。
デタッチ/アタッチしてコンピュータ名とかが変わってるのにレプリケーションの情報が古かったのね。
そういうときは sp_removedbreplication して設定を全部消せばいいと思う。

190 :NAME IS NULL:2007/05/28(月) 16:36:32 ID:???
>>189
ありがとうございます。
sp_removedbreplicationをしたほうが、早く移項できました。

191 :NAME IS NULL:2007/05/29(火) 12:58:56 ID:???
>>177
まあなんだ、うんこ製造機は氏ね

192 :NAME IS NULL:2007/05/30(水) 00:04:54 ID:???
>>164
http://www.sqlpassj.org/bbs/bbs_disp.aspx?forum_id=1¤t_page=1&disp_mode=2&detail_mode=1&message_id=4558

193 :NAME IS NULL:2007/05/30(水) 17:48:35 ID:???
なんだ、こんなとこよりPASSJの方がレスついていいじゃん


194 :NAME IS NULL:2007/05/31(木) 01:38:10 ID:???
SQLServer 7.0と2005の間でレプリケーションって
組めるのかしら?
2005のGUIから7.0に繋がらんっす

195 :NAME IS NULL:2007/05/31(木) 03:22:21 ID:???
>>194
できる。ただし制限はある。そして SSMS は SQL Server 7.0 に接続して管理することはサポートしていない。
これらのことは次のページに書かれている。

レプリケーション トポロジにおける複数バージョンの SQL Server の使用
http://msdn2.microsoft.com/ja-jp/library/ms143241.aspx

196 :NAME IS NULL:2007/05/31(木) 12:56:58 ID:???
GUI繋がらないとなると
T-SQL手打ち?

197 :NAME IS NULL:2007/05/31(木) 14:40:57 ID:???
>>196
SQL Server 2000/7.0 のクライアント ツール (Enterprise Manager) をインストールするか、osql/isql/sqlcmd を使って T-SQL コマンドを実行する。
Enterprise Manager も SSMS も UI で操作されたら T-SQL コマンドを実行しているだけなので、何を使おうがデータベースから見ればやってることは一緒です。

198 :NAME IS NULL:2007/05/31(木) 19:13:05 ID:???
初心者で申し訳ありません。2005のレポーティング機能について学習しているのですが、
何かおすすめの書籍やサイト等、ありませんでしょうか?
機能についてと、外部アプリからの連動について詳しいと有難いです

199 :NAME IS NULL:2007/05/31(木) 20:07:14 ID:???
>>198
Books Online のチュートリアルとサンプル

Reporting Services のチュートリアル
http://msdn2.microsoft.com/ja-jp/library/ms170246.aspx

SQL Server Reporting Services サンプル
http://msdn2.microsoft.com/ja-jp/library/ms160954.aspx

200 :NAME IS NULL:2007/06/01(金) 07:30:50 ID:???
>>199
早速ありがとうございます。参考にさせていただきます

201 :NAME IS NULL:2007/06/03(日) 20:55:36 ID:???
アプリケーションがどのテーブルを利用しているのか
調べようとしてます。
SQLプロファイラで監視して中身見ればどのテーブル利用したか
解析可能ですか?
システムDBとユーザDBどちらを使ってるかまでわかれば
尚よしなのですが。

202 :NAME IS NULL:2007/06/04(月) 01:19:47 ID:???
>>201
まずやってみて、それで自分の期待したものが取れなかったらまた来てください。

203 :NAME IS NULL:2007/06/04(月) 16:33:50 ID:???
質問です。
VB.NETでSQLデータベースのテーブルを
検索・選択することには成功しました
その上で、選んだデータベースの中の列名をプログラム上で
検索するにはどうしたら良いでしょうか?
列名や行の場所をそのまま打ち込んで中のデータ習得には成功しているのですが・・・

204 :NAME IS NULL:2007/06/04(月) 16:58:53 ID:???
へ?

205 :NAME IS NULL:2007/06/04(月) 18:46:38 ID:???
>>203
多分、いまはカラムをインデックスで指定しているけども、列名で指定したいっつー質問なんだろな。
で、それは SQL Server じゃなくて ADO.NET の質問だからこっちで聞いてくれ。

http://pc11.2ch.net/test/read.cgi/db/1104630889/

あと、今どうやってるかと、何の本/サイトを見て今まで知識を得たか書いた方がいいぞ。
例えば SQLClient.Connection.なんたらのなんとかメソッドとかプロパティを使ってるとか、な。
まあ、コードを貼ってもらえればいいんだが、よけいなところは取り除くんだぞ。

206 :NAME IS NULL:2007/06/04(月) 19:45:58 ID:???
sp_columnsって話じゃね?

207 :NAME IS NULL:2007/06/04(月) 19:55:12 ID:???
ADO.NETでWindowsアプリ作ってるけど>>203の質問がサッパリ理解できない

208 :205 :2007/06/04(月) 22:05:49 ID:???
俺も正直わからんよw
本音を言えばまず隣の席の人と話してみ?と言いたいww


209 :NAME IS NULL:2007/06/04(月) 23:53:42 ID:???
>201です。

やってみました。
取れてたトレース内容の一部が以下です。


RPC:Completed 11
2007-06-01 19:13:59.623 declare @P1 int
set @P1=180150055
declare @P2 int
set @P2=1
declare @P3 int
set @P3=4
declare @P4 int
set @P4=1
exec sp_cursoropen @P1 output, N'SELECT
ID,COMPGUID,STNAME,SQLNAME,STFLAGS,STMAXID,CLASSCAT,CLASSID,OBJCAT,OBJSTID,OBJPLCAT,OBJPLSTID FROM CTABLES WHERE ID = @P1', @P2 output, @P3 output, @P4 output,
N'@P1 int', 70
select @P1, @P2, @P3, @P4


他にも色々あったのですが、とりあえずこれだけ抜き出してみた時に
以下はあってますか?

・テーブルはCTABLES
・declareで変数を定義
・setで代入する値を定義


不明点は
・テーブルCTABLESはmasterDBとユーザDBの両方にあるのでどちらかわからない
・テーブルの中を見てもレコードが更新されているようには見えない。


declareがあるやつはみんなレコード更新されているかと思ったのですが
exec sp_cursoropen以降の分を読み解けてないですか?


210 :NAME IS NULL:2007/06/05(火) 07:55:04 ID:???
>>209
アタマイタイ・・・

> declareがあるやつはみんなレコード更新されているかと思ったのですが

なんでそう思ったの?

> exec sp_cursoropen以降の分を読み解けてないですか?

ストアドプロシージャって知ってる?
Books Online って知ってる?


211 :NAME IS NULL:2007/06/05(火) 21:05:45 ID:???
MS SQL Server 2000 で重複データの削除を行いたいのですが、処理が遅く困っています。

現状
Delete from TblA
Where
exists ( Select * from TblB
Where
TblA.Key1 = TblB.Key1 and
TblA.Key2 = TblB.Key2 )

Insert into TblA
Select * from TblB

TblAとTblBはまったく同じ構造です。
最終的に、TblBの内容をTblAにInsert(同一キーはTblBの内容に上書き)できれば良いのですが、
なにかよい方法はないでしょうか。


212 :NAME IS NULL:2007/06/05(火) 21:30:17 ID:???
Delete TblA from TblB
Where
TblA.Key1 = TblB.Key1 and
TblA.Key2 = TblB.Key2
とも書けると思うが、インデックスはちゃんとついてるんだろうな?

213 :NAME IS NULL:2007/06/05(火) 21:47:45 ID:???
>>212
さっそくのアドバイスありがとうございます。そういった書き方があったのですね。
早速試してみたいと思います。

214 :NAME IS NULL:2007/06/06(水) 16:03:34 ID:???
ごめん、教えてほしい。
SQLsever2005でテーブル上で定義できるフィールドの数っていくつまでだっけ?
2000だと255だか254のはずなんだが。



215 :NAME IS NULL:2007/06/06(水) 20:16:38 ID:???
>214
1000くらい。
SQLServer2000でも同じ。
フィールド数の上限よりも先にレコードのサイズの上限に引っかかるわけだが。

216 :NAME IS NULL:2007/06/06(水) 20:30:29 ID:CRQWegaj
すみません、教えてください。

SQLserver2005でバックアップしたDBを
下位のSQLserver2000にリストアできるのでしょうか?。

217 :NAME IS NULL:2007/06/06(水) 20:39:54 ID:???
>>216
> SQLserver2005でバックアップしたDBを
> 下位のSQLserver2000にリストアできるのでしょうか?。
できません


218 :NAME IS NULL:2007/06/06(水) 22:17:16 ID:???
>>214
SQL Server 2000/2005 共に 1,024 (=2^10) です。

その他の最大容量仕様は次のリンクに一覧になっています。

SQL Server 2005 の最大容量仕様
http://msdn2.microsoft.com/ja-jp/library/ms143432.aspx

最大容量仕様(SQL Server 7.0/2000)
http://www.microsoft.com/japan/sql/prodinfo/previousversions/Specmax.mspx

キーワードは 最大 容量 仕様 です。忘れた場合はこのキーワードで BOL を検索してください。

219 :NAME IS NULL:2007/06/07(木) 06:31:53 ID:???
>>214
コボラ乙


220 :NAME IS NULL:2007/06/08(金) 15:42:13 ID:nSaiK7ce

Access から SQL Serverへアップサイジングしたが、
動作がより緩慢になってしまった。。

VB6アプリとAccessのクラサバで10-20人程度で利用していた時は、
20万件程度の蓄積データがあったんだけど、2〜3秒掛からない程度で
データ登録や検索とかが出来ていたんですが、MSSQLになって、
これが4〜5秒、酷い所では7〜8秒掛かるようになってしまった。。

変更後はこの様になっています。

以前:Access→VB6アプリ
現在:MSSQL→Access(リンク/クエリ)→VB6アプリ

あんまりMSSQLに関して詳しく無いので、当りが付けられません。
Accessからの移行で遅くなった場合、どこら辺に問題ありそうか
教えていただけないでしょうか?

221 :NAME IS NULL:2007/06/08(金) 16:17:54 ID:???
>Access(リンク/クエリ)

VB6使ったことないんで適当ですまんが、ここが無駄なんでね?
↓はAccessからPostgresqlへの移行だけど、参考になるかもしれない
http://www.jade.dti.ne.jp/kamada/access_and_postgres/linktable.htm

222 :NAME IS NULL:2007/06/08(金) 17:02:26 ID:???
>>221
お宝文書ありがとう御座います。

まだざっとしか読んでいませんが、非常に参考になります。

これはちょっと根が深そうで、ちょっとした修正では駄目かも
知れないですね。。。ぁぁ


テストで作った同じ内容の普通のクエリとパススルークエリを
比べてみると明らかにパススルークエリの方が遅いんですよ〜。
(参照はありますが、計算もしていない簡単な構文です。)

本当DBって難しい。

223 :NAME IS NULL:2007/06/08(金) 17:23:48 ID:???
>>219
コボラを馬鹿にしてるおまえは、無教養禿げ、氏ね

224 :NAME IS NULL:2007/06/08(金) 21:01:03 ID:DbmSpgZ2
超初心者からのSQL SERVER 2000について質問です。

機密情報(社員情報)が格納されているテーブルに
悪意を持ったユーザがアクセスした場合に(ADO、o-sql、
ODBC等のツールを使用して)、Windowsのイベントログへ
警告を出力させたいのですが、どのような設定が必要で
しょうか?

よろしくお願いします。

225 :NAME IS NULL:2007/06/08(金) 22:47:48 ID:???
>>224
悪意を持ったユーザーとそうでないユーザーをどうやって見分けるつもりなの?

226 :NAME IS NULL:2007/06/08(金) 22:49:45 ID:???
あなたは悪意を持ったユーザーですか?(y/n)

227 :NAME IS NULL:2007/06/08(金) 22:51:57 ID:???
>>222
そりゃ、一個やることが増えたんで遅くなるのは当たり前じゃないの?
単純な処理の場合、接続の方がコストがかかるので、接続が増えたら遅くなるでしょ。

SQL Server に命令が来てからそれを返すまでどれくらい時間がかかってるかは SQL プロファイラで調べられるよ。


228 :224:2007/06/08(金) 22:58:57 ID:DbmSpgZ2
>>225
コトバ足らずですみません。

「悪意をもったユーザ」というよりは、クエリアナライザ等、
SQL SERVERの機能以外を使用して、機密情報テーブルへアクセス
するユーザのことです。

何卒、お知恵の拝借をお願いします。

229 :NAME IS NULL:2007/06/08(金) 23:26:40 ID:???
>>228
素直にSQLServerが使用するポート以外閉じておけば?


230 :NAME IS NULL:2007/06/09(土) 01:14:50 ID:???
>>220
つーかVB6からMSSQL直接叩けよ!
リンクなんかしてると移行した意味ねーじゃん!


231 :NAME IS NULL:2007/06/09(土) 01:57:51 ID:???
>>228
osqlやクエリアナライザは正当なSQLServerのクライアントなのだが。

専用クライアント以外は繋がせたくないってことであれば
うちは定期的にsp_who2をかけて所定のアプリ以外の接続があったら
管理者に警告メールが来るようジョブを作ってた

232 :NAME IS NULL:2007/06/09(土) 05:17:41 ID:???
>>228
アプリケーション ロールを使え。

あと、言葉たらずじゃないよ。足りないのは知識です。
"SQL Server 2000 でいってみよう" くらい読めよ。簡単なんだから。

233 :228:2007/06/09(土) 18:22:40 ID:Y7nuDHpZ
>>231
>>232
ありがとうございます。
早速、実践します。

234 :NAME IS NULL:2007/06/12(火) 12:04:52 ID:3CcBW2In

Enterprise Manager(DBは2000)の管理−プロセス情報と見ると、地球のマークが
光っているプロセスIDが20件程度あり、その中で状態がrunnableで待機時間が9000000を
超えている物もあります。
待機の種類はNETWORKIOとなっており、CPU/メモリも多少使っている様子です。
ただ、ブロッキングなどはされていない様です。

この「状態がrunnableで待機時間が9000000」と言うのは、どういう状態で
起こっている事なのでしょうか。
何か情報を持っている方、教えてください。

よろしくお願いします。

235 :NAME IS NULL:2007/06/12(火) 12:14:01 ID:???
>>234
気にするな。プロセス ID 50 以下はシステムが使ってるものだから、初心者は気にしなくていい。
どうしてもっつーんなら、select * from master..sysprocesses の結果をテキストでさらしてマターリと待て。

236 :234:2007/06/12(火) 12:32:24 ID:???
>>235
ありがとうございます!

とりあえずは、気にせず突っ走ります。

237 :使えない子:2007/06/14(木) 06:30:10 ID:???
オハヨウゴザイマス〜助けてください〜(´Д`;)
SQL Server 2000で、
「バックアップを”サイクリックに”とる方法を調べて」
と指示され、[SQL Server バックアップ サイクリック]等の組み合わせで
検索して片っ端から探したつもりなのですが、どうしても見つからないです〜
どなたかお力添えを〜(´人`;)

238 :NAME IS NULL:2007/06/14(木) 06:46:47 ID:696P34JJ
>>237
バックアップの定期スケジューリングを設定すればよいのでは?
・・・そんな簡単なコトじゃないのかな?

239 :237:2007/06/14(木) 09:01:59 ID:???
>>238
お返事ありがとうございます〜(´Д`;)
例えば毎日のバックアップで、
バックアップファイルを日付で管理して1ヶ月サイクルで上書きしていく、
(つまり、常に今日から1ヶ月前までのバックアップが残る)
というような方法をとりたいのです。m(_ _)m

240 :NAME IS NULL:2007/06/14(木) 09:07:17 ID:???
バッチファイルかSPを書かないと無理じゃないかね

241 :237:2007/06/14(木) 10:04:47 ID:???
>>240
あわわ、なんだか難しそうですね(゚Д゚||)

こんな方法を考えてみました。
Enterprise Managerを使ってスケジューリングし、
例えば1週間分のバックアップをサイクリックにとるとしたら、
1週間おきにバックアップをとるスケジュールを7つ設定して、
それぞれ違う曜日に発動するようにする、
といった方法で・・・1ヶ月のサイクルだと31個も作るので
大変だとは思いますが・・・これで実現できるでしょうか・・・?(´Д`;)

242 :237:2007/06/14(木) 10:45:22 ID:???
たびたびすみません!!!!
データベース保守計画ウィザードというので目的は解決したっぽいです。
が!
ウィザード終了時にSQLSERVERAGENTサービスが停止されたのですが、
これはほっといても、スケジュールの時間が来れば自動的に起動するのですか・・・?
管理ツールでサービスをみると、「手動」になっているのですが・・・。
ほんと、
使えない教えて君っ子ですみません。m(_ _)m

243 :NAME IS NULL:2007/06/14(木) 11:12:10 ID:???
自分で起動すればいいじゃない

244 :237:2007/06/14(木) 11:18:54 ID:???
>>243
りょ、了解です〜!!
とりあえず開始してみました!
無事動きますように・・・ナムー (-人-)

245 :NAME IS NULL:2007/06/14(木) 19:12:46 ID:???
SQL Server Agent は設定した時間が来ても自動的には起動しない。
だからスタートアップの種類を自動に変更しなければならない。
SQL Server Agent が起動されていなければ、設定した時間が来てもジョブや保守計画は実行されない。

246 :NAME IS NULL:2007/06/15(金) 08:50:20 ID:???
説明乙
でも、手動って、そういうことでしょ?
自動で起動することをそもそも手動とはいわない

247 :NAME IS NULL:2007/06/15(金) 17:58:03 ID:???
SQLServer2005の64bitの導入を検討してます。
現行 クライアント:VB6 + ADO2.7 サーバー:Windowsk2003 + SQLServer2000 32bit
で運用しているのですが、SQLServer2005の64bitに移行して、アプリ変更無しで動くのでしょうか?
サーバーはSQLServerのみでVB6のアプリを動かすことはありません。

愚問ですが、どなたかご教授ください。

248 :NAME IS NULL:2007/06/15(金) 20:17:07 ID:???
>>247
動きますけど何を心配しているのですか?

こういうことのために "プロトコル" というものがあるのです。
Web サーバーが 64bit だからって、ブラウザと Web サーバーの通信は HTTP で変わりません。
それと同様、データベース接続ドライバとデータベース間ではプロトコルがあり、通信を行っています。
極論すればデータベースとクライアント間では SQL 文字列を送って結果をもらってるだけで、
さほど複雑なことをやってるわけではありません。

249 :111:2007/06/19(火) 06:22:32 ID:sP4zNuhP
>>125
返事が大変遅れて申し訳ありません。
mdfをアタッチしてsqlcmdで実行してみたところ、意図したとおりの動作をしてくれました。
ただし、VS2005で実行してみるとやはり該当する行がないと怒られます。

プログラム内から呼び出してもやはり意図したとおりには動かないので、
インターフェースがうまくいってないのかもしれません。

たとえば、タグ一覧を表示する以下のストアドプロシージャは
該当する行はないと言っておきながら、@@ROWCOUNTだけは意図した通りに
返ってきます。

SELECT Tags.*
FROM Tags
RETURN @@ROWCOUNT

ADO.NETとかのバグなのだろうか…

250 :111:2007/06/19(火) 06:23:24 ID:???
あ、あげてしまった。

251 :NAME IS NULL:2007/06/19(火) 08:57:27 ID:???
>>249
普通に考えてVisualStudioのバグか制限だろ

252 :NAME IS NULL:2007/06/19(火) 10:07:42 ID:8pVDjV9H
SQL Server 2005に入っているテーブルの定義書を
エクセルファイルなどに出力する機能は、SQL Server自体に
存在しますか?あったら、教えて下さい。

253 :NAME IS NULL:2007/06/19(火) 10:11:19 ID:???
>>252
ない。うちの社内でそういうツールを作ってた人がいたんで、フリーウェアであるんじゃない?


254 :NAME IS NULL:2007/06/19(火) 10:16:09 ID:8pVDjV9H
>>252
どうもです。

255 :254:2007/06/19(火) 10:17:02 ID:???
>>252 → >>253

256 :NAME IS NULL:2007/06/19(火) 10:24:03 ID:???
>>249
オレだったら問題を再現させるプログラムを作ってMSDNで問い合わせるなぁ。
多分ドライバじゃなくてクラスの挙動がおかしいんで、ASP.NETじゃなくてフォームでも同じ問題がおきるだろうから、つくるのは簡単だろ。

自分でできることはとりあえず.NET FrameworkのSPを最新にして、hotfixをさがす、かな。

257 :NAME IS NULL:2007/06/19(火) 11:32:40 ID:8pVDjV9H
SQL Server 2005 で
サーバー間で実データはコピーせずに、テーブル構造だけ
コピーしたいのですが、テーブル単位ではなく、DB単位で
コピーする方法を教えてください。

258 :NAME IS NULL:2007/06/19(火) 15:04:34 ID:BokQHzhb
質問です
現在の日付から20日以内のものだけセレクトするSQL文を教えてください

259 :NAME IS NULL:2007/06/19(火) 15:08:52 ID:???
>>257
Management Studio を SP2 にしてデータベースを右クリック→タスク→スクリプトの生成

260 :NAME IS NULL:2007/06/19(火) 15:15:44 ID:???
>>258
-- 今から 20 日前の日時を返す
SELECT DATEADD(day, -20, GETDATE())

-- YourTable.DateTimeColumn が 20 日前〜現在の行を返す
SELECT * FROM YourTable WHERE DateTimeColumn BETWEEN DATEADD(day, -20, GETDATE()) AND GETDATE()

丸めは自分で調節してください。

261 :NAME IS NULL:2007/06/19(火) 15:26:16 ID:BokQHzhb
ありがとうございます

262 :NAME IS NULL:2007/06/19(火) 15:44:09 ID:8pVDjV9H
>>259
ありがとうございます。うまくいきました。

263 :NAME IS NULL:2007/06/19(火) 20:02:44 ID:vSZN4us0
>>220
>Access から SQL Serverへアップサイジングしたが、
>動作がより緩慢になってしまった。

私の会社で移行しましたけど、かなり動きが速くなりました。
クラスタ化インデックスと非クラスタ化インデックスの違いとかわかりますか?
その辺りの設定をしないといけないのですが…。

後はACCESSのクエリー(SQL)の見直しですね。
特定のクエリーで止まっている可能性もあるので
それを一つ一つ潰していけば速くなりますよ。


264 :263:2007/06/19(火) 20:17:43 ID:vSZN4us0
ACCESSの「インデックス」と言うと一つの設定しかないから見逃し易い。

あと途中のレスでもあるけど、VB6から直接SQL SERVERに接続すると
速いです。ACCESSのODBC経由だと遅くなりがち。
そもそもACCESS自体が重い。

265 :111:2007/06/21(木) 14:48:58 ID:???
ありがとうございました。
なぜだかよく分からないのですが、いろいろ触っているうちに動くようになりました。

確実な原因は二つあったみたいです。
まず、IDEの問題。これはIDE側の右クリック→実行ではuniqueidentifier型
のフィールドを含むデータを表示できなかったようです。(バグか仕様かは分かりませんが)
これは後でMSに報告しておこうと思います。

もうひとつは、データを取得するコードが間違っていたようです。
ただこれがちょっと腑に落ちないのですが(ほかの場合はちゃんと動作する
コードなので)、それはともかくDataGridを使用すると正常に取得できる
ことを確認しました。

みなさんのご協力に感謝します。大変助かりました。

266 :NAME IS NULL:2007/06/22(金) 14:44:14 ID:???
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 
ビチビチウンコ ビチビチウンコ ビチビチウンコ ビチビチウンコ 


267 :NAME IS NULL:2007/06/23(土) 03:29:32 ID:Pc5ke7Ie
すんません、updateの副問い合わせについて質問なんですが。

update a2 set rank =


select 
count(*) 
from 
aa as a1
where


from aa as a2


どんな意味なんでしょうか?('A`)


268 :NAME IS NULL:2007/06/23(土) 10:36:11 ID:W8GXpRZs
プロファイラについて初歩的な内容を教えてください。

フィルタによる複数の項目を条件により絞込みをする場合、
AND条件なのかOR条件なのか、どちらなのかを教えてください。

実際に試してみると、AND条件のような気がするのですが、
裏付け(BOOKS ON LINE等)がないので質問いたしました。

どなたか、教えて頂けませんか?よろしくお願いします。

269 :NAME IS NULL:2007/06/23(土) 10:38:43 ID:Qpvn0v6w
変態キモ女はMac使いwww

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
痴女達によるおちんちん鑑定団 part2 [女性]
Mac OS X初心者質問用スレ 22.3 [新・mac]
あなたのおちんちん診察します [医歯薬看護]
満足するペニスサイズ [女性]
【♂増強】ペニス増大法を語ろう 24mm【エクササイズ】 [身体・健康]

http://life8.2ch.net/test/read.cgi/diet/1181982908/l50x

270 :NAME IS NULL:2007/06/23(土) 18:33:28 ID:???
>>267
テーブル aa のフィールド rank の値をサブクエリの結果で更新する

271 :267:2007/06/24(日) 10:09:36 ID:uWxZr8d/
>>270
すんません、書き方が悪かったです。
where句がサブクエリの中にしかないのですが。
これって全件更新になってしまわないのでしょうか。

どうも、ある条件で更新されているようではあるのですが。。


272 :NAME IS NULL:2007/06/24(日) 16:02:24 ID:???
>>271
全件更新するように見えるよ。

273 :NAME IS NULL:2007/06/24(日) 19:09:05 ID:???
>>268
or

274 :267:2007/06/24(日) 20:15:48 ID:???
サブクエリ内の抽出結果は0〜複数件がありえます
ちなみに現行では0件しか出てないみたいですが。
複数件抽出された場合どうなるんですかね。

サブクエリ内の条件で抽出した結果でそのサブクエリ内の条件に一致するレコード更新が行なわれているとすれば
納得いったのですが。。
やっぱり違ったんでしょうかね。。
明日一日悩むことになりそう( ´Д` )






275 :NAME IS NULL:2007/06/24(日) 22:32:19 ID:???
select count(*)
↑なら常に1件しか返さないはずなんだが質問の条件をわざと隠して聞いているのか?

276 :267:2007/06/24(日) 23:06:11 ID:???
ああ、count(*)だから1件ですか
そうですね、、1件ですね。<勘違いしてました

つーことはやっぱ全件更新なんですよね。
ありがとうございます。もっかいソース解析しなおします(つA`)





277 :NAME IS NULL:2007/06/25(月) 07:45:15 ID:???
職場の隣の席の女子が定時を過ぎて
「まだ帰らないんですか」とか「今日は帰りが遅いんですか」とか
「今日はこのあと用事あるんですか」とか「おなか空きましたね」とか
やたらと言ってくるから、じゃあ呑みにでも行きますかって言ったら、
「あ、私、習い事があるんで無理です」って言われて、ビックリした。
一瞬なにが起きたのかわからなかった。
横断歩道で青信号だと思って渡ろうとしたらトラックにはねられた人の気持ちになったわ。

278 :NAME IS NULL:2007/06/25(月) 09:11:41 ID:???
職場の隣の席の女子が定時を過ぎて に一致する日本語のページ 約 921 件中 1 - 10 件目 (0.15 秒)
http://www.google.co.jp/search?hl=ja&q=%E8%81%B7%E5%A0%B4%E3%81%AE%E9%9A%A3%E3%81%AE%E5%B8%AD%E3%81%AE%E5%A5%B3%E5%AD%90%E3%81%8C%E5%AE%9A%E6%99%82%E3%82%92%E9%81%8E%E3%81%8E%E3%81%A6&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

279 :NAME IS NULL:2007/06/26(火) 14:06:24 ID:???
質問です

SQL Server2005で 作成済みテーブルの
Create Table を取得できるクエリってありませんか?
ストアドなら

select definition from sys.all_sql_modules
where object_id = (
 select object_id from sys.objects where name = 'ストアドの名前')

とかで取れるんですけど。。。


280 :NAME IS NULL:2007/06/26(火) 16:45:48 ID:???
>>279
まねずめんとすたじおでテーブル右クリ-編集
ただし最新版じゃないと編集ってのがでてこない


281 :NAME IS NULL:2007/06/27(水) 18:35:06 ID:???
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ PGなんかビチビチウンチ PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 
PGなんかビチビチウンチ 


282 :NAME IS NULL:2007/06/29(金) 13:42:22 ID:???
睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 
睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 
睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 
睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 睾丸 

283 :NAME IS NULL:2007/06/30(土) 06:47:39 ID:???
SQLServerを弄りはじめているのですが、
SQL構文が今まで使ってきたDBと若干違うため、
戸惑っています。

Transact-SQLの構文リファレンスの書籍があったら
教えてください。


284 :NAME IS NULL:2007/06/30(土) 09:05:10 ID:???
>>283
Books Online
http://go.microsoft.com/fwlink/?linkid=50478

これが嫌ならその理由、使っているバージョン、前に使っていた DBMS、あなたのレベル、やりたいことなどを教えてくれ。

285 :NAME IS NULL:2007/06/30(土) 15:54:52 ID:???
>>284
情報ありがとうございました。
最高の情報です。

286 :NAME IS NULL:2007/07/02(月) 00:34:29 ID:+ZeJbjhI
すいません質問です

データベースをテーブルを使って入力しているんですが
入力時にデータがTITLE順に並んでいるのをLocation順に表示させたいのですが
どうすればよいのでしょうか

287 :NAME IS NULL:2007/07/02(月) 01:05:34 ID:???
>>286
お前が使ってるシステムの詳細は誰も知らないんだから
知らない人間に分かるように質問してくれ

288 :NAME IS NULL:2007/07/02(月) 01:26:58 ID:+ZeJbjhI
これ以上どう説明していいのやらわからないんです><

289 :NAME IS NULL:2007/07/02(月) 01:34:12 ID:???
それじゃ答えようがないです><

290 :NAME IS NULL:2007/07/02(月) 01:51:45 ID:???
まずは同じ職場の人に聞いてみることだな。

291 :NAME IS NULL:2007/07/02(月) 13:33:05 ID:???
Locaton順にソートさせればいいよ!

292 :NAME IS NULL:2007/07/02(月) 13:44:16 ID:???
>>286
TITLE欄にLocationも一緒に入れれば?
01:XXXXXX とか。


293 :NAME IS NULL:2007/07/02(月) 13:51:05 ID:???
select * from hoge
order by Location

294 :NAME IS NULL:2007/07/03(火) 00:41:36 ID:tgazdh0o
>>293さん
多分、286さんから、追加注文来るよ。
他のフィールドは降順にしたいとか・・・。

295 :NAME IS NULL:2007/07/03(火) 01:03:51 ID:???
SQLすら書けなさそうだから問題ない

296 :286:2007/07/03(火) 01:49:51 ID:JK2HUr+d
ふおーもう駄目じゃあああ><

297 :286:2007/07/03(火) 02:26:12 ID:JK2HUr+d
と思ったら>>293の通りにやったらできた!ありがとうごましました!

298 :293:2007/07/03(火) 10:04:25 ID:???
皮肉のつもりで書いたのだが、
それで正解なのかよw

299 :NAME IS NULL:2007/07/03(火) 10:57:45 ID:???
286、今年からDB触り始めた新入社員にしても少し成長が遅い気が...w

300 :NAME IS NULL:2007/07/03(火) 16:23:24 ID:WJx9EhHL
初心者向けの本、探してんだけど、
Microsoft SQL Server 2005 Express Edition For Dummies
ってどう? > 読んだ人

アドミニ系とプログラム系が適度に纏まっていて(といっても
400頁もあるよ orz)、よさげなんだが。 他にもいろいろと…
http://www.amazon.com/s/ref=nb_ss_gw/104-5039913-3895963?url=search-alias%3Dstripbooks&field-keywords=Sql+server

イパーイ読むのは嫌なんで(つか、読めない)、なるだけ短いのがいいんだが、
アドミニ/プログラム両方だと400ページって最低量なんかな

ほかにお勧めある? (内容が良ければ、和書でもOk)

301 :NAME IS NULL:2007/07/03(火) 16:27:59 ID:???
>>300
dummiesは可もなく不可もなく。
斜めに読んだ感想。
というか、目的がわからんからアドバイスできんわな。

302 :NAME IS NULL:2007/07/03(火) 17:01:33 ID:???
SQL Server 2005 および SQL Server 2000 での
JIS X 0213:2004 (JIS2004) 対応に関するガイドライン
http://www.microsoft.com/downloads/details.aspx?FamilyID=e942342a-719f-4841-a9d2-f6d9fd58299f&DisplayLang=ja

303 :NAME IS NULL:2007/07/03(火) 18:50:22 ID:???
>>300
SQL Server 2005 自習書シリーズ
http://www.microsoft.com/japan/sql/techinfo/selfstudy.mspx

この次は Books Online の最新版をダウンロードして、チュートリアルを一通りやる。
インデックスや統計情報などについては "SQL Server 2000 でいってみよう" と Books Online で問題なし。
SQL Server 2005 については正直いい本が出てない。基本さえわかれば Books Online と MSDN フォーラム、それでもわからない場合はサポートを使ってる。
SQL Server 2005 ビギナーズガイドとインサイド SQL Server 2005 はまだ目を通してないけど、今のとこ不自由はしてません。


304 :NAME IS NULL:2007/07/03(火) 22:16:22 ID:???
>>303
質問した人じゃないけどサンクス!
SQLSERVER使いまくりのプロジェクト入って途方にくれてた・・・orz
まあ、管理しないから接続とsql書ければいいんだけど念のため準備しておかないとね。

305 :NAME IS NULL:2007/07/03(火) 23:08:39 ID:???
 SQL質疑応答スレ(http://pc11.2ch.net/test/read.cgi/db/1176553195/391-397)で質問させていただいた者です。
 実行する環境がSQL Serverなため、こちらでも質問させてください。
 下記2つのViewから

View_受注残(主キーに該当するのは注文番号&分納番号)
得意先名/需要先/手配番号/分納番号/出荷品番/出荷数量
----------------------------------------------
あ / /001/00 /a /57000
あ / /001/01 /a /114000
        ・

View_在庫・2次加工中一覧(主キーはロットNo。工程識別コードは1220が在庫。数字が大きいほど在庫に近い工程)
ロットNo/品番/工程識別コード/工程数量
-----------------------------------------------
1000001/a/1220/712
1000102/a/1220/38000
1000302/a/1220/712
1000401/a/1220/15373
1200505/a/1220/1084
1200601/a/1220/5164
1200702/a/1220/1481
1200805/a/1120/48550
1300902/a/1120/49171
1401001/a/1120/49919
1401105/a/1020/49536
        ・

下記みたいな

得意先名/需要先/手配番号/分納番号/出荷品番/出荷数量/ロットNo/ロット必要数
----------------------------------------------
あ / /001/00 /a /57000/1000001/712
あ / /001/00 /a /57000/1000102/38000
あ / /001/00 /a /57000/1000302/712
あ / /001/00 /a /57000/1000401/5373
あ / /001/00 /a /57000/1200505/1084
あ / /001/00 /a /57000/1200601/1164
あ / /001/01 /a /201600/1200601/4000
あ / /001/01 /a /201600/1200702/1481
あ / /001/01 /a /201600/1200805/48550
あ / /001/01 /a /201600/1300902/49171
あ / /001/01 /a /201600/1401001/49919
あ / /001/01 /a /201600/1401105/48479

データがほしいのですが、文頭リンクの回答SQLを上記2つのViewに当てはめた場合、どのように書き直せばよろしいでしょうか?
また、そのSQL文はSQL Serverで実行可能なものなのでしょうか?
皆様のお知恵を拝借いたしたくよろしくお願いいたします。

306 :NAME IS NULL:2007/07/03(火) 23:54:08 ID:???
「こちらでも」って、向こうの質問取り消さなきゃただのマルチだろ

307 :305:2007/07/04(水) 00:03:03 ID:???
あちらのスレでは一応、質問を閉めたつもりだったので・・・
誤解しやすい文章で申し訳ありません。マルチと思われ気分を害されていたらすみませんでした。

308 :NAME IS NULL:2007/07/04(水) 08:08:11 ID:???
>>307
どのレスで閉めてるつもりよ?

309 :NAME IS NULL:2007/07/04(水) 08:48:46 ID:???
しっかし、関係者が見たら自分のとこのヤツが聞いたとわかってしまいそうなこんな聞き方していいのかよ。
しかも向こうのスレでレスいっぱいもらってるのに、レス番をを示しもせずにそれを自分とこに使うやり方を教えてくれって
レスをまったく理解しようとしてないだけじゃん。詳しくは向こうのスレを熟読してくださいってか。

つまり答えとなる SQL を書いてくれ、即ち自分の仕事を代わりにタダでやってくれってことだろ。ふざけんな。
自分とこの職場の先輩に「わからないので教えてください」っていうのが先じゃねーの。

310 :NAME IS NULL:2007/07/04(水) 08:49:39 ID:???
そうそう目くじらたてる程のことでもないだろ

311 :NAME IS NULL:2007/07/04(水) 08:51:16 ID:???
と言いつつ一切答えを示さないおいら

312 :NAME IS NULL:2007/07/04(水) 08:59:37 ID:???
>>311
そんなことに頭と時間を使いたくないのはお互い様

313 :NAME IS NULL:2007/07/04(水) 13:25:49 ID:???
質問すら読んでません><

314 :305:2007/07/04(水) 15:11:09 ID:???
何度も不愉快な思いをさせてしまい、本当に申し訳ございません。

帰ってきたSQL質疑応答スレ(http://pc11.2ch.net/test/read.cgi/db/1176553195/395-394)で質問したところ、
>305のView_受注残とView_在庫・2次加工中一覧からほしい形式を取り出すのに下記SQL文を実行する必要があるらしいのですが、

SELECT T3.*,T4.製造日番 FROM
(
SELECT *,
COALESCE((SELECT sum(製造数量) FROM 注文テーブル WHERE 製造日番<T1.製造日番 AND 製造品番=T1.製造品番),0)AS ptotal,
COALESCE((SELECT sum(製造数量) FROM 注文テーブル WHERE 製造日番<=T1.製造日番 AND 製造品番=T1.製造品番),0)AS ntotal
FROM 注文テーブル AS T1
) AS T3
FULL JOIN
(
SELECT *,
COALESCE((SELECT sum(注文数量) FROM 進捗管理テーブル WHERE 注文番号<T2.注文番号 AND 注文品番=T2.注文品番),0)AS ptotal,
COALESCE((SELECT sum(注文数量) FROM 進捗管理テーブル WHERE 注文番号<=T2.注文番号 AND 注文品番=T2.注文品番),0)AS ntotal
FROM 進捗管理テーブル AS T2
)AS T4
ON (T3.製造品番=t4.注文品番 )
WHERE T4.ntotal BETWEEN T3.ptotal AND T3.ntotal
OR T4.ptotal >T3.ptotal
ORDER BY T4.注文番号;

私には上記sql文が高度過ぎてどこをどのように書き換えたらよそしいのかさっぱり判断がつきません。
sql文に強い人間が身近にいないため、聞くにも聞けず本当に困っています。皆様助けてください。
皆様よろしくお願いいたします。

315 :NAME IS NULL:2007/07/04(水) 15:15:06 ID:???
>>314
たぶんだが、おまいに今の仕事はむいてない。

316 :NAME IS NULL:2007/07/04(水) 15:17:05 ID:???
>>314
大丈夫だ。中身読んでないから不快な思いしてない。

317 :NAME IS NULL:2007/07/04(水) 16:46:01 ID:???
Management Studio のオブジェクトエクスプローラの詳細で
作成日時に時間が表示されてませんが、表示するやり方
はあるんですか?

318 :NAME IS NULL:2007/07/04(水) 17:58:09 ID:???
>>317
できない。製品フィードバックページを見たら同じフィードバックがあった。

Table create date/time instead of just date in summary view
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=127192

確かに不便なんで一票入れておきました。
ちなみにデータ自体は時間もとってきているので、SSMS の UI で時間を表示していないだけでした。

319 :NAME IS NULL:2007/07/04(水) 18:33:27 ID:???
>>314
言葉遣いは丁寧だがすげー DQN なレスだな。これほどのは久しぶりに見た。
SQL 文とかそういうの関係ないから。とりあえず周りと相談しろ。この状態じゃこんなとこで答えられん。

320 :NAME IS NULL:2007/07/04(水) 20:31:29 ID:???
>>314
SQL以前に自分がやりたい事をテーブルレベルで考えろ。
で、そいつをストアドにしてしまえ。
どうせSQLひねくりまわした事やったってその職場ではメンテ不能なんだから
だれでも理解できる確実な方法をやればいいだろ。
パフォーマンス?そんなのマシン買ってもらえ。
職場全体の教育コストよりは安いから。

と、質問内容を見ないでカキコ


321 :305:2007/07/06(金) 19:14:27 ID:???
皆さんにここまでいわれるとは思っても見ませんでした・・・

勉強を一からしなおしてきます。

スレを汚してしまいして申し訳ありませんでした。

322 :NAME IS NULL:2007/07/06(金) 22:16:24 ID:o79f8M8u
テーブルの内容をINSER文のSQLでエクスポートする方法はないですか。
エクスポートしたあと、SQLを一部修正して複数のDBへINSERTということをしたいのです。

PHPMyAdminのエクスポートみたいなことをしたいのですが。




323 :NAME IS NULL:2007/07/07(土) 00:04:59 ID:???
>>322
そんなことしなくても、SQL Server 2000 には DTS、2005 には BI という機能があります。
もしくは BCP を使う。ネイティブ モードでエクスポート/インポートしてバッチファイルでインポートすればよし。

324 :NAME IS NULL:2007/07/07(土) 00:06:17 ID:???
>>321
仕事か勤務先を変えた方がいいと思われ。
素人に一人で仕事させる会社なんか信用できん。

325 :NAME IS NULL:2007/07/07(土) 06:11:52 ID:???
>>322

http://www.codeplex.com/sqlhost

Publishing Wizard

326 :NAME IS NULL:2007/07/09(月) 18:28:32 ID:???
素人というか、そもそも問題の意図がどこにあるかがさっぱり解かってない
相手にはその質問のどこに問題があるかを指摘してやらにゃ解からないだろうに。

おまいら、ほんと心がねぇよな。
いくら頭が賢くても、心ない人間は付き合いたくない人種だぜ。

いまさらだが >>305
の質問では、
得意先or需要先とロットbフ関係がさっぱり解からんのよ。
あと、ロット必要数の定義ね。

君の質問だけど、
僕、足立区に住んでて、
足立区にはこれとこれとこの町があるんだけど、
これだけの情報で、僕のお母さん探してくれませんか?
って言ってるようなもの。

それじゃ分かる訳ないなってな感じなのかね。

このような質問の仕方だけで、自身がまだ質問できるレベルに達していないと解かる。
で、たぶんそこが解かれば、SQL自体はそんな難しくないはずだから解かるんでないかな。

いまさらと思うが・・・


327 :NAME IS NULL:2007/07/09(月) 23:45:37 ID:???
>>326
このスレは総じて親切なスレだと思うけどね。
ボコられてるのは >>24>>164 のマルチと >>305 くらいで、>>46 とか >>110 への返信なんてえらく親切だと思うけど。
>>305 はまず先輩や同僚と話し合うべき質問だよ。アカの他人に聞いても答えられるものではない。

328 :327:2007/07/09(月) 23:46:27 ID:???
まちがえた。>>24 はボコられてなかった。

329 :NAME IS NULL:2007/07/09(月) 23:46:40 ID:???
亀レスで終わった話題を蒸し返すなよ

330 :NAME IS NULL:2007/07/10(火) 00:12:17 ID:???
そうだね。話題を変えていこう。
SQL Server 2008 もう試した?
なんかデータが圧縮できるらしい。ディスクと CPU のパフォーマンスが心配だけどメモリたくさんつめばイケるのかな。

CTP はここで落とせる。明日インストールしてみるつもり。
https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395

空間情報サポートは案件がこなそうだなあ。

331 :NAME IS NULL:2007/07/10(火) 14:41:12 ID:???
バックアップについて質問です。

週に1回全体バックアップ、1日に2回差分バックアップ、
30分に1回トランザクションログバックアップを取るように
バックアップ計画を立てています。

この場合、トランザクションログのバックアップは最大12時間分
残しておけばよいので、SQL Serverエージェントのジョブの設定も
そのようにしたいのですが、方法がわかりません。

具体的には、LOG.BAKファイルの増大を抑えるため、LOG.BAKの
中身が12時間(24回)分のバックアップでローテートされるように
したいのですが。。。

ご教授お願いします。

332 :NAME IS NULL:2007/07/10(火) 16:52:43 ID:???
>>331
データベース保守計画ウィザードを使う。
SQL Server 2005 ならメンテナンス プラン ウィザードね。

333 :かなかな:2007/07/13(金) 20:51:56 ID:UixSmPfQ
お世話になります。
SQLServer2000StanderdにACCESS2000ADPからADO接続しています。(古い構成ですが)
お聞きしたいのはインスタンスのことです。
現在のSQLServerは既定の構成(インスタンスなし)でセットアップしたものですが、
これに対してACCESSより接続を行うとエラーとなります。

接続文字列は以下のとおりです。
Provider=SQLOLEDB.1; Data Source=HOGEHOGE_SRV; Initial Catalog=HOGE_DB;
Persist Security Info=true; user id=sa; password=****

エラーは「SQLServerが存在しないか、アクセスが拒否されました」です。

で、実はインスタンス名を付与してセットアップを行ったSQLServerがもう一台あって、
そちらに同様の接続文字列で接続するとつながるのです。
データソース名のみ変えています。(Data Source=HOGEHOGE_SRV\INS01 のように)

ACCESSのADPのファイルメニュー−接続で表示されるデータリンクプロパティを
使うと、インスタンス名のありなしに関係なく接続できてしまいます。接続できないのは
ACCESSのVBAで記述したADO接続で、インスタンス名なしのサーバにつなぎにいった時だけです。

すでに行き詰っております。お知恵お貸しください。。


334 :NAME IS NULL:2007/07/13(金) 21:23:36 ID:???
>>333
新規テキストファイルを作成して、ファイル名を test.udl とかに変えてダブルクリックしてみる。
そんでいろいろ設定して接続テストがうまくいったらテキストエディタで test.udl を開く。
それが接続可能な接続文字列で、適当に加工してプログラムに組み込む。

エラーの意味は、SQL Server が Listen していると思うポートにアクセス試行したけど、応答がありませんでした、という意味だ。
つまり既定のインスタンスであれば TCP 1433 番ポートなので、そこにアクセスを試みたけど応答が無かったという意味だ。


335 :かなかな:2007/07/13(金) 22:09:52 ID:UixSmPfQ
>>334
早速ありがとうございました。こんな便利なやりかたがあるんですね。
接続文字列を貼り付けてみたところ、見事に接続されました。

というかサーバ名を1文字間違えていただけでした。ご教授の方法にて
作成した接続文字列と比較していなければもっと時間がかかったかも。
ありがとうございました。

336 :NAME IS NULL:2007/07/14(土) 06:43:38 ID:???
1文字くらい違ってても多めにみろよコノコノ-
ってことですか・・・

337 :NAME IS NULL:2007/07/15(日) 21:30:36 ID:???
初心者向けに、VB2003からパラメータ付きでSQL Server 2000 のストアドプロシージャを
呼び出すようなサンプロコードが書かれているようなページ無いでしょうか?

338 :NAME IS NULL:2007/07/15(日) 22:36:45 ID:???
>>337
ずいぶん限定するんだな。

VS2005 + SQL2005 なら現行だから、VB6 + SQL2000 ならば一昔前の一般的な組み合わせだから資料も多いんだが。

VS2005 + SQL2005: Let's Master ストアド・プロシージャ!(前編)
http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_08/vs2005db_08_01.html

VB6 + SQL2000: SQL Server 2000 自習書シリーズ
http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/evaluate/exercises.mspx
開発編 No.5-1 Transact-SQL を使用したデータベースの基本操作
開発編 No.6 Visual Basic によるデータベースアプリケーション開発入門
あたり。

サンプルがほしいなら、多分 VS.NET2003 に付いてくる SDK やサンプルをあさればあるでしょ。
VS.NET2003 が出た頃は SQL2000 が現行バージョンだったからね。
VS.NET2003 も SQL2000 もはじめてなら、素直に先輩に聞いたほうがいいぞ。

339 :NAME IS NULL:2007/07/16(月) 20:32:21 ID:Bop8QnK9
http://c-au.2ch.net/test/-/mass/1183191945/i#b
http://c-au.2ch.net/test/-/soc/1152718893/i

340 :NAME IS NULL:2007/07/17(火) 22:43:56 ID:???
亀レスだが。

>>181
Management Studio からデータベースを右クリック→タスク→データのインポートで CSV も Excel もインポートできる。
Management Studio Express ではできるかどうかわからん。
Management Studio Express のダウンロード先は >>57 を参照してください。
また Express Edition で BI 系ツールを使うには、SQL Server Express Toolkit をインストールすれば使える。

341 :NAME IS NULL:2007/07/18(水) 10:58:05 ID:???
初歩的な質問で申し訳ありません。
現在、SQL Server 2000でDBのパフォーマンスチェックを行うために、
SQL プロファイラを使用してDurationの値を監視しています。
ですが、TextDataが「-- network protocol: TCP/IP set quoted_identifier〜」
となっているものと(DurationはNULL)、TextDataがNULL(Durationがやたらと大きい)
のログの意味がいまいちよくわかりません。
上の二つはセットになっているようなので、トランザクションか何かの
時間を表してるのかなぁと思っていますが。
DBのレスポンスだけをチェックしたいのであれば上記の
「TextDataがNULL」のログについては無視してもかまわないのでしょうか?

342 :NAME IS NULL:2007/07/18(水) 12:11:40 ID:???
>>341
気にしたこと無いわ。無視していいんじゃない?
たぶんそれクライアントからの DB への接続で、プーリングを使ってるから duration が大きいんでないの?

343 :NAME IS NULL:2007/07/24(火) 08:42:33 ID:23CsOyc5
やっぱphpMyAdminのあるMySQLのほうが便利だよな。

344 :NAME IS NULL:2007/07/25(水) 10:53:45 ID:hBYSx6Qt
SQL文で今日より以前の日を絞り込む方法を教えてください

345 :NAME IS NULL:2007/07/25(水) 11:46:00 ID:???
CURRENT_TIMESTAMP

346 :NAME IS NULL:2007/07/25(水) 11:49:22 ID:???
getdate()でもよかった

347 :NAME IS NULL:2007/07/25(水) 11:53:31 ID:vso8Zt4w
Ver7 と Ver2005 は同じサーバ下でふつうに
お互い干渉することなく共存できますでしょうか?
接続ポートは異なる番号にするとして。

348 :NAME IS NULL:2007/07/25(水) 11:56:10 ID:oKumoV+x
すまそ、ストアドプロシージャで
ネスト状態のトランザクションの一番外側のトランザクションをロールバックしたら
内側のトランザクションのコミットまでロールバックされちゃうんだけど、
内側のトランザクションのコミットだけを有効にする方法ってないでしょか。。
(別のコネクションを作って処理方法ってのは見つかったけど処理が遅そうなので、
 それ以外でなにか方法ないでしょか)

ぶっちゃけストアドプロシージャのログをテーブルに書き込みたいんだけど、
ロールバックしたら書き込んだはずのログまでロールバックされちまうのよね。。

SQL Server2005っす。よろしくお願いしますm(_ _)m

349 :NAME IS NULL:2007/07/25(水) 12:05:00 ID:VpzEkwc4
>>348
>(別のコネクションを作って処理方法ってのは見つかったけど処理が遅そうなので、 
> それ以外でなにか方法ないでしょか) 

これしかないね。

350 :NAME IS NULL:2007/07/25(水) 12:25:51 ID:vso8Zt4w
>>348
方法論の話になるけど
内側のトランザクションってログを吐くだけ?
ならログを吐く前にトランザクションを解放すればいいのでは?
解かっているとは思うけど・・・

>>347の回答をお願いします。


351 :348:2007/07/25(水) 13:20:00 ID:oKumoV+x
>>349
む、他に方法はないすか・・・ログ出力とかどーししてるんだろ。。
下の方法が無理だったら別コネクション作ってやってみるっす、ありがとです。

>>350
うん、それも考えたけど処理中には好きなだけログ出したいのん。
ストアドプロシージャの開発経験が無いからハマッたんだけど、
たいていはローカル変数にログを格納しておいて、一度トランザクションを終わらせたあと
全部出すって感じなんかな。
ちょっとこちらで実装試みてみるっす、ありがとです。
PS.バージョン違いのSQLServerのインストールはしたことないからわかんないっす、すまそ。

352 :NAME IS NULL:2007/07/25(水) 13:53:15 ID:vso8Zt4w
>たいていはローカル変数にログを格納しておいて、一度トランザクションを終わらせたあと
>全部出すって感じなんかな。

ログを吐きたいときにROLLBACKしてローカル変数の
トランザクション解放フラグをセットして
で最後にそのフラグでCOMMITするかの判定をするの方が簡単かと。。。

>>どなたか347の回答をお願いします。

353 :NAME IS NULL:2007/07/25(水) 14:00:51 ID:vso8Zt4w
あ、ローカル変数のフラグ持たなくても@@TRANCOUNT代用でいけると思う。

354 :NAME IS NULL:2007/07/25(水) 14:20:02 ID:???
>>347
7.0 はインスタンスの概念がないから、2005 を名前つきインスタンスにすれば原理としては動く。
だがサポートはされてないので、サポートがほしければ移行をする。


355 :NAME IS NULL:2007/07/25(水) 15:02:21 ID:vso8Zt4w
>>354
ちなみに、Ver7運用のWindows2000Serverへ2005運用のWindowsXP(個人PC)から
2005を引越させたかったのです。

移行コストと統合した場合のライセンス数の問題もあるので諦めがつきました。
ありがとお。

356 :NAME IS NULL:2007/07/25(水) 17:56:08 ID:???
>>347
つ「VMwareServer」

357 :NAME IS NULL:2007/07/27(金) 03:48:54 ID:9Xf5xfZa
どなたか助けてください。
PDO_ODBC で SQL Server に接続するWEBサイトの更新をしなくてはならないのですが、
SQL Server のDBはJapanese_Unicode_CI_ASで中国語や韓国語も文字も入っています。
しかしなぜか、INSERT,UPDATE,SELECTの全ての処理で、文字コードをSJIS変換しないと
文字化けしてしまいます。PHPスクリプトは全てUTF-8です。
文字化けせずにINSERT,UPDATE,SELECTの処理を行う方法はあるでしょうか?


358 :NAME IS NULL:2007/07/27(金) 05:23:48 ID:???
>>357
文字の入る列のデータ型は何なの?

359 :NAME IS NULL:2007/07/27(金) 05:27:11 ID:???
>>357
よくわからんけどあてずっぽうで言ってみる。 文字リテラルにNをつける。
INSERT INTO xx (hoge) VALUES ( N'Unicode 文字列' )

360 :NAME IS NULL:2007/07/27(金) 07:03:46 ID:9Xf5xfZa
>>358
Japanese_Unicode_CI_AS で同じです。
Management Studio では中国語、韓国語の表示、入力可能なんですが。。

361 :NAME IS NULL:2007/07/27(金) 07:05:15 ID:9Xf5xfZa
>>358
あっ、データ型は nvarchar です。

362 :NAME IS NULL:2007/07/27(金) 07:21:23 ID:9Xf5xfZa
>>359
Nプレフィッスつけるとうまく行きます。
でもSELECT *時は自動的にSJIS変換されるようで、
SJISにない文字は?に置き換わります。
あと、INSERT, UPDATE時に文字リテラルにNをつけるのは
PDOのプレースフォルダでは使えないですね。
PDOのメリットが。。。

363 :NAME IS NULL:2007/07/27(金) 07:59:57 ID:W4GUl2oG
bcp で image型の列に格納されている写真データを、文字形式でフィールド終端文字をカンマにして、
いわゆる csv ファイルとして保存した場合、正常にインポートすることが可能なのでしょうか?
SQL Server は全くの素人なので、MSDNのサイトを色々調べていたのですが、どうもよくわかりません。
どなたか教えて頂けませんか?


364 :NAME IS NULL:2007/07/27(金) 11:00:11 ID:36Ve7Y87
SQL Server 2005のこの不具合って
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=322393&SiteID=7&mode=1
直っています?

自分の環境では上記の不具合のせいで激しく使いにくいんですけど

クライアントはWinXP SP2で、Management StudioにはSP2適用済み




365 :NAME IS NULL:2007/07/27(金) 11:27:03 ID:???
>>364
これはしらんかった。試してみたらほんとにそうなるね。
これ多分 .NET Framework 2.0 のクラスにバグがあると思うんで、SQL Server の fix として直るか微妙だな。
.NET Framework 使ってない Enterprise Manager を使うか、VB6 か VBA で入力だけやるか、でとりあえず逃げるか・・・

366 :NAME IS NULL:2007/07/27(金) 11:27:58 ID:???
>>363
bcp に -n オプションをつけてエクスポート・インポートしてみ?

367 :NAME IS NULL:2007/07/27(金) 11:31:55 ID:???
>>362
php スクリプトのコードページが SJIS になってると思われ。
どうやって変えたらいいかはわからん。ASP なら @codepage=... で指定するアレ。

368 :366:2007/07/27(金) 11:33:54 ID:???
>>366 はスルーしてくれ。読み間違えた。

369 :NAME IS NULL:2007/07/27(金) 15:43:30 ID:9Xf5xfZa
>>367
コードページとはPHPでどう指定するのでしょうか?
mb_internal_encoding('UTF-8');
mb_language('ja');
だけでは不十分でしょうか?



370 :NAME IS NULL:2007/07/27(金) 16:30:13 ID:???
>>369
その mb なんとやらはぐぐったところによると http レスポンスに対する文字コードの設定で、コードページとは違うんじゃないかな。
php は使ったことがないんでどうやってやるかはわからない。

371 :NAME IS NULL:2007/07/27(金) 16:53:17 ID:9Xf5xfZa
357です。
皆さん、いろいろ助言いただきありがとうございました。
やはりPHPとSQL ServerではUTF-8でのやりとりは不可能なのかもしれません。
コードを全て書き換える覚悟で、MySQLやPGSQLも検討しないといけない
かもしれません。。。。つらいです。。


372 :NAME IS NULL:2007/07/27(金) 17:00:06 ID:???
>>371
php "sql server" utf8 でぐぐってみたらこんなページがヒットした。
http://www.thinkit.co.jp/free/article/0707/14/2/

373 :NAME IS NULL:2007/07/27(金) 19:54:44 ID:9Xf5xfZa
>>372
ありがとう。でもそのページはここに質問する前に確認してまして、
UCS-2,UTF-16での変換処理もテスト済みでした。
結果は、アルファベットのみのテーブル名まで文字化けして、
SQL文自体もエラーが出ます。
その点、UTF-8ならASCII互換なのでデータは文字化けしても
大丈夫なようです。
どの段階でSJISに自動変換されてるかがとても不思議です。
入出力時の文字コード指定なんかもあるのかな?
はあ、もう2週間以上も。。です。。

374 :NAME IS NULL:2007/07/27(金) 20:34:08 ID:???
php pdo odbc と階層が深いからどこかで何かあるんだね。
OSとphpとodbcのバージョンを明記しとくれ。
このスレで答えられそうなのはodbcまでだべ。

375 :NAME IS NULL:2007/07/27(金) 21:01:40 ID:9Xf5xfZa
>>374
ありがとう。なんかここ優しい人多いね。
Windows Server 2003 Enterprise Edition SP2
PHP 5.2.3 (IISはISAPI、バッチはCGIで)
ODBC 3.526.3959.0

よろしくお願いします!!!

376 :NAME IS NULL:2007/07/30(月) 22:10:24 ID:G6kjI83w
SQL Server Expressでデータのインポート/エクスポート用ツール
が有る(DTSWizard.exe)と記事にあったがDTSWizard.exeなるexeが
見当たらない
この記事は誤り?
記事つttp://itpro.nikkeibp.co.jp/article/COLUMN/20070725/278293/
?ST=middleware

377 :NAME IS NULL:2007/07/30(月) 23:25:29 ID:???
>>376
SQL Server Express には DTS インポート/エクスポート ウィザードはついてないようです。
SQL Server 2005 Developer Edition でも買ってみたらどうでしょう。Amazon で 5000 円くらいだし。

もしくは >>57 にあるように SQL Server Express Toolkit をインストールして SSIS を使うか、BCP を使うか。

参考ページはこちら
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=156956&SiteID=1

378 :NAME IS NULL:2007/07/30(月) 23:32:24 ID:m5/h5tTg
SQLServer2005Expressにクエリアナライザは無いのでしょうか?
ダウンロードサイトなどがあれば教えてください。

また、osqlで接続しようとすると下記のエラーが発生します。
------
C:\Documents and Settings\masuda>osql -U sample_user -P pass
[SQL Native Client]名前付きパイプのプロバイダ : SQL Server への接続を開けません
でした [2].
[SQL Native Client]ログイン タイムアウトが時間切れになりました
[SQL Native Client]サーバーへの接続確立時にエラーが発生しました。接続先が SQL Se
rver 2005 である場合は、既定の設定では
SQL Server がリモート接続を許可していないことが原因である可能性があります。
------
リモートの接続許可をしているのですが、何の設定ができてないのでしょうか?
ちなみに -d DB名 -S サーバ名の指定を入れてもだめです。
ユーザーはちゃんとDB接続の権限はあります。

379 :NAME IS NULL:2007/07/31(火) 01:08:14 ID:???
>>378
>>57 のリンクから SQL Server Management Studio Express SP2 をインストールする。
クエリアナライザは SSMS に統合されている。

後半は次のリンクを読んでくれ。

http://www.microsoft.com/japan/sql/ssj/tips/01.mspx

380 :NAME IS NULL:2007/07/31(火) 01:12:23 ID:???
>>378
あー・・・これでやってみ。
osql -S (local)\SQLEXPRESS -E
もしくは
osql -S (local)\SQLEXPRESS -U <user_name> -P <password>

381 :NAME IS NULL:2007/07/31(火) 13:00:11 ID:Gabgbzj2
しょぼい質問だけど、SELECT文に数式書けないの?
たとえば「SELECT day(getdate()) = 30」とか。(TRUE または FALSEを受け取りたい)
あ、CASE〜WHENは使わずにです、ふと気になったんよね。

382 :NAME IS NULL:2007/07/31(火) 19:01:12 ID:vAKxfwZu
SQL ServerでLIMIT OFFSET 句のようなものを最も簡単に
実現する方法はないでしょうか?

383 :NAME IS NULL:2007/07/31(火) 20:29:27 ID:???
>>381
できない。

384 :NAME IS NULL:2007/07/31(火) 20:33:52 ID:???
>>381
IFで

385 :NAME IS NULL:2007/07/31(火) 20:39:21 ID:???
>>382
LIMIT に相当するのは SET ROWCOUNT または TOP/PERCENT 句
OFFSET に相当するのはわからん。無いと思う。

386 :NAME IS NULL:2007/07/31(火) 20:59:52 ID:???
>>378のように2005で sqlcmd を使わない理由ってなんだろ? なぜ osql?

387 :NAME IS NULL:2007/07/31(火) 21:32:46 ID:???
>>386
増田君はまだ sqlcmd の存在を知らないんじゃないかな。

sqlcmd の使い方
http://download.microsoft.com/download/7/b/7/7b7872d1-7890-4950-93d7-32c4d8080b0d/SQL2005_SQLCMD.doc

リンク元
http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/exercises.mspx

388 :381:2007/08/01(水) 14:15:30 ID:wqqOJI35
>>383 やっぱできないのね、ありがとん。
>>384 それができないんよね。。。

389 :NAME IS NULL:2007/08/01(水) 16:59:56 ID:03Q0U7a/
重いSQLを実行した時に1回目よりも2回目の方が実行時間が短いのですが、
これはキャシュか何かに残るからなのでしょうか?
もし、そうでしたら残らないようにできませんか?
2回目の実行時間を1回目と同じにしたいんです。
SQLServerのバージョンは2005です。

390 :NAME IS NULL:2007/08/01(水) 20:20:18 ID:???
>>389
DBCC DROPCLEANBUFFERS

391 :376:2007/08/01(水) 22:38:21 ID:???
>>377
ありがと
あの記事は誤りなんですね

業務使用の為Developer Editionはやめときます
BCPでやります

392 :389:2007/08/02(木) 08:12:22 ID:???
>>390
サンクス。試してみます。

393 :NAME IS NULL:2007/08/02(木) 15:41:14 ID:d0YVhx1l
CURRENT_TIMESTAMPから-300秒した時刻を書き込みたい場合
どうすればいいでしょうか?

394 :NAME IS NULL:2007/08/02(木) 16:01:12 ID:???
>>393
DATEADD

395 :NAME IS NULL:2007/08/03(金) 10:54:19 ID:???
VB6+ADOでSQL Server 2005から10万行とか引っ張ってきてdatagridで表示してるんだけど
検索に時間かかってその間、何も表示されなくなっちゃうんだけど
結果を一気に受け取るんじゃなくて
だらだらと流されてくるのをそのままだらだら表示みたいなことってどうやったらいいんでしょう?

なんて検索したらいいのか検索キーワードもよく解らないんで
検索キーワードだけでも教えてください。

答えそのものずばりの方がうれしいけど

396 :NAME IS NULL:2007/08/03(金) 11:20:36 ID:???
>>395
分けて読んでだらだら表示させればいいんじゃね?


397 :NAME IS NULL:2007/08/06(月) 09:07:07 ID:???
最終的に10万行のレコードを一遍に見せられても
それを見る人間のほうが処理能力追いつかないと思うんだが・・・

398 :NAME IS NULL:2007/08/06(月) 14:49:29 ID:/Tu3zhUl
更新トリガを使って更新履歴を履歴テーブルに出力しようとしてるんだけど
元のテーブルにtext型があるのでエラーになってしまう
いい回避方法を教えてください。


399 :NAME IS NULL:2007/08/06(月) 15:46:31 ID:???
>>398
"元のテーブルにtext型がある" ので "エラーになってしまう"
↑この因果関係がわからんので説明してくれ。

それからエラーが出る時はそのエラー番号やらメッセージを正確に書き込んでくれ。
じゃないと何が問題でエラーになってるのかわからん。

400 :goto:2007/08/06(月) 16:12:01 ID:P5Wj6Hsu
MSSQL Server がある日から突然、開始できなくなってしまいました。
サービスマネージャーで開始ボタンを押しても、すぐに停止してしまいます。
どなたかご教示をお願い致します。

401 :NAME IS NULL:2007/08/06(月) 16:36:02 ID:???
イベントログ見ろ。

402 :NAME IS NULL:2007/08/07(火) 14:15:44 ID:???
>>399
詳細を報告するのでお願いします。
更新履歴をとりためにトリガーを作成したいと考えてます。
INSERT INTO [HISTORY_LOGDATA].[dbo].[LOG]
(コメント)
SELECT
コメント,
FROM [Deleted]
のコメントがTEXT型で定義されている状況です。

このsqlを実行すると
サーバー : メッセージ 311、レベル 16、状態 1、プロシージャ D見積_HISTORY、行 71
挿入されたテーブルおよび削除されたテーブルでは、TEXT、NTEXT、および IMAGE 列を使用できません。
のえらーが出ます。

どうしたらいいのか教えてください。


403 :NAME IS NULL:2007/08/07(火) 15:06:44 ID:???
>>402
正確に書き出してる?

404 :NAME IS NULL:2007/08/07(火) 17:42:50 ID:???
>>402
311 "Cannot use text, ntext or image columns" trigger でぐぐった。

SQL2KSP4 で修正されているこんなバグがあるが、これじゃねーの?
http://support.microsoft.com/kb/884855/en-us

質問の仕方はこのページの書き方がわかりやすい。
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_20692567.html?cid=335
しかし登録しないと回答はみれない。

>>402 が書いたエラーメッセージではぐぐっても何もヒットしなかった。
エラーメッセージが正確でないためにヒットしなかったんなら、検索もしてねーってことで。

405 :NAME IS NULL:2007/08/07(火) 22:02:59 ID:???
>>402
ちゃんとマニュアル読めよ。

http://msdn2.microsoft.com/ja-jp/library/ms191300.aspx

| SQL Server 2005 では、AFTER トリガ用の inserted テーブルおよび
| deleted テーブル内で text 列、ntext 列、または image 列を参照す
| ることを禁止しています。これらのデータ型は旧バージョンとの互換
| 性のためだけに用意されているものです。大量のデータのストレージ
| には、varchar(max) データ型、nvarchar(max) データ型、および
| varbinary(max) データ型を使用することをお勧めします。AFTER
| トリガと INSTEAD OF トリガでは、inserted テーブルと deleted
| テーブルで varchar(max) 型、nvarchar(max) 型、および
| varbinary(max) 型のデータがサポートされます。詳細については、
| 「CREATE TRIGGER (Transact-SQL)」を参照してください。

406 :NAME IS NULL:2007/08/07(火) 22:12:37 ID:???
解決方法は別の方法で同じ機能を実装するか、コメント列の型を
text → varchar(max) / nvarchar(max) / varbinary(max) に変えるか、か。

SQL Server 2008 CTP ではまだ text 型は使えるけど、その次にはもうなくなりそうだな。

407 :NAME IS NULL:2007/08/08(水) 17:18:10 ID:3I8cN/t6
SQL Server 2005 Books Online (2007 年 5 月)
http://www.microsoft.com/downloads/details.aspx?FamilyID=be6a2c5d-00df-4220-b133-29c1e0b6585f&DisplayLang=ja

408 :NAME IS NULL:2007/08/14(火) 18:57:31 ID:???
sys.tablesより検索しておのおののテーブルのカウントを取りたいのですが、間違いだといわれます・・・

declare @name varchar(128)
declare curs CURSOR for
select name from sys.tables where name not like '[_]%'
open curs
fetch next from curs into @name
while @@fetch_status=0
begin
declare @count nvarchar(1024)
select @count=count(*) from @name  ← ここが間違い

fetch next from curs into @name
end
close curs
deallocate curs

言われてみればもっともなんですが、文字列からテーブル型に代える手段ってあるんでしょうか?

409 :NAME IS NULL:2007/08/14(火) 23:01:10 ID:???
>>408
やりたいことがわかりません。テーブルの "カウント" って何?

410 :NAME IS NULL:2007/08/14(火) 23:12:37 ID:???
テーブルごとの行数を出したいんだろ

411 :NAME IS NULL:2007/08/14(火) 23:31:10 ID:???
そうなん?sys.tables の定義を見ると、「テーブル オブジェクトごとに 1 行のデータを返します。」って書いてある。
だから各テーブルにつき一行というのははじめから決まっていると思うんだが。

Books Online: sys.tables
http://msdn2.microsoft.com/ja-jp/library/ms187406.aspx

それとも、「各テーブル内にデータとして持っているレコード数」っていう意味?
>>409 の書き方だとそのように理解することも出来ると思うのだけど。

412 :NAME IS NULL:2007/08/15(水) 00:38:24 ID:???
レコード数の意味でしょ。ソースは間違ってるけど。

413 :NAME IS NULL:2007/08/15(水) 09:06:59 ID:???
>>408
> declare @count nvarchar(1024)

なんで、レコード「数」なのに文字列なんだ?


414 :NAME IS NULL:2007/08/15(水) 10:12:38 ID:???
初心者なんだしょ。

415 :NAME IS NULL:2007/08/16(木) 14:51:28 ID:9jbOvHpM
素人質問っす。
同じスキーマ内のユーザー定義ストアドプロシージャからユーザー定義関数を呼び出すときにもスキーマ名は必要っすか?
『'(ユーザー定義関数の名前)'は 組み込み関数名 として認識されません。』ってエラーが出ますのん。
同じスキーマ内なんだからいいじゃんって思うんだけど、なにかが間違ってる??

ちなみにユーザー定義ストアドプロシージャ作成時の CREATE文のストアドプロシージャ名には
スキーマ名は付けてないけど思い通りのスキーマにストアドプロシージャは作成されます。
(ためしにストアドプロシージャ名にスキーマ名を付けて CREATEしてみたりもしたけど同じエラーが発生)

416 :NAME IS NULL:2007/08/20(月) 17:56:41 ID:ybUOpt+W
OracleのMERGE、MySQLのREPLACE構文の代替ってありますか?

417 :NAME IS NULL:2007/08/20(月) 23:58:51 ID:???
>>416
if exists ...
update ...
else
insert ...

418 :NAME IS NULL:2007/08/24(金) 01:48:57 ID:???
SQL Server 2005 Express を使っています。
バックアップを取っていない場合に、
レコードを削除してしまったら復活する方法はないのでしょうか。

419 :NAME IS NULL:2007/08/24(金) 12:59:22 ID:6I2DLghf
>>418
それ、ゴミ箱から消したファイルを復活させたいってのと同じじゃね?
コミットしてなかったらロールバックで復活可能だが(w

420 :NAME IS NULL:2007/08/24(金) 20:48:47 ID:Jo3vzugf
初心者すぎる質問で申し訳ないです。
ユーザーCALのユーザーってSQLSERVERのユーザー、Windowsのユーザー、
○○さんと××さんが使用するっていう自己申告のユーザーのうちどれを
指してるんでしょうか。MSのホームページみても理解できませんでした。

421 :NAME IS NULL:2007/08/24(金) 22:19:56 ID:???
>>420
アクセスするユーザー数だけ必要。
対象システムの最大利用者数分購入する必要があるはず。

422 :NAME IS NULL:2007/08/24(金) 22:42:47 ID:pk3uMvIo
SQLには、Webサーバ上のASP.NETプログラム経由でしかアクセスしない
場合でも、そのASP.NETの利用ユーザ数分だけCALが必要なのでしょうか?

(SQLサーバには、ファイアウォールで直接ユーザからのアクセスはできないようになっている)

423 :NAME IS NULL:2007/08/24(金) 22:58:57 ID:???
>>422
直接アクセスできなくたって、SQL Serverを利用している事に変わりはない。
CALならASP.NETの利用ユーザ数分必要。


424 :NAME IS NULL:2007/08/25(土) 23:26:17 ID:oW87BVWG
初心者な質問なんですいません。
現在、SQL-Server2005の価格表とにらめっこしているのですが、
ライセンスのところがよく分りません。
"Select A Level"と"Open Business No Level"の違いがわかる方
いらっしゃいましたらご教授お願いいたします。

425 :NAME IS NULL:2007/08/25(土) 23:55:37 ID:???
>>424
http://www.microsoft.com/japan/customer/information/phone.aspx

426 :NAME IS NULL:2007/09/04(火) 17:36:54 ID:BavPmLq2

SQL クエリアナライザ で実行モードで「結果をグリッドに表示」を選択しても
何も表示されなくなってしまいました。
また、トレース、統計、メッセージは表示されますが、
実行プランも表示されなくなってしまいました。

表示されないとは、タブは出来るんですが、内容が真っ白です。

SQL Server2000で、クエリアナライザはそれについていた物です。

何か分かる方いますか?

427 :NAME IS NULL:2007/09/04(火) 22:44:19 ID:???
>>426
結果をテキストでは表示できたり、SHOWPLAN ALL ではプランが表示されるというなら、
コントロールが壊れちゃったんだろうな。クライアント ツールだけ再インストールが手っ取り早いと思う。

428 :NAME IS NULL:2007/09/06(木) 15:01:53 ID:???
SQL Server 2005 の SQL文で、あるテーブルの任意の位置にカラムを追加したいのですが
その方法はありますか?

TABLE-A に
A, B, C と列がある時、A と B の間に AB というカラムを追加し、
A, AB, B, C というテーブル情報にしたい。

末尾に追加するのであれば ALTER Table できるのですが。

方法があれば教えてください。

429 :NAME IS NULL:2007/09/06(木) 16:15:51 ID:???
>>428
目的が分からんからアレだけど、ALTER TABLEじゃ無理じゃね?

別案として、
・カラム(A、AB、B、C)を持つ「TABLE_B」を作成
・TABLE_AのデータをTABLE_Bにコピーする
(必要であればABに値も入れておく)
・あとはTABLE_Aに移し変えるなり好きにする


430 :429:2007/09/06(木) 16:22:30 ID:???
追加
Enterpirze Managerだと出来るかも

431 :NAME IS NULL:2007/09/06(木) 16:41:04 ID:???
テーブルのカラム、任意に並べ替えることにどれほどの意味があるの?

432 :NAME IS NULL:2007/09/06(木) 19:37:55 ID:???
テーブル構造見るときに気持ちいい程度なんじゃないの。

データを読み込むときは、
SELECT A,AB,B,C FROM TABLE_NAME
ってすれば、ABがどこにあろうと…

433 :NAME IS NULL:2007/09/06(木) 23:50:46 ID:???
>>428
ALTER TABLE では無理。>>429 の通り。
GUI の管理ツールでカラムを追加した場合は、内部のレコードがいったん tempdb に対比され、テーブル定義が削除され、再度テーブルが作成されてデータが tempdb からもどされるので、GUI 上と同じ列順になる。


434 :NAME IS NULL:2007/09/07(金) 07:54:13 ID:???
その、テーブル定義の並び順が、どうして大切なのか、
そういう風にするとSQLの最適化が出来るとかいう情報があるなら
ぜひ教えてほしいんだけど。

キーが無いテーブルに、キーを追加するなら最適化できるから
十分理由はあるんだけど、キーの項目が先頭に無いといけない
とはTechNetにも記述無いしなぁ

435 :NAME IS NULL:2007/09/07(金) 12:49:02 ID:???
RDB では、良く検索される項目を左側に持っていくと
抽出効率が良くなると、聞いた事はある。

どれぐらい差があるのかは知らないが。

436 :NAME IS NULL:2007/09/07(金) 21:22:31 ID:???
>>435
今はそういうのはないと思うよ


437 :NAME IS NULL:2007/09/09(日) 00:11:30 ID:???
OS:Windows Vista Business64bit
にSQL SERVER 2005の評価版(x64)をインストールしたんだけど
インストール時に規定のインスタンスを指定してインストールしたにもかかわらず
management studioに表示されない。
SP2を入れてみても改善せず。

だれか助けて

438 :NAME IS NULL:2007/09/09(日) 00:58:18 ID:S34UPkq4
こんにちは、ど素人プログラマです。

SQLサーバー2000について教えて欲しいのですが、

あるテーブルに項目1、項目2、項目3が定義されているとして、
 項目1の値が「1」のときは、項目2は必須項目
 項目2の値が「1」以外のときは、項目3は必須項目
というような事を外部キー制約のように実現するにはどうすればいいのでしょうか?

制約? トリガ?


439 :NAME IS NULL:2007/09/09(日) 03:13:11 ID:???
>>437
>management studioに表示されない。
[ファイル]→[オブジェクトエクスプローラを接続]で接続してもだめでしょうか?
あと、サービスの起動は確認済みでしょうか?

>>438
個人的にはINSERT、UPDATEトリガーを使うのが良いかと。

440 :NAME IS NULL:2007/09/09(日) 12:49:10 ID:Qt4qWxfl
>>437
コマンドラインで接続できるか?

osql -E で接続できれば、Windows認証で接続できている。
osql -U sa -P password で、passordをインストール時に指定したものを
入力して接続出来るのなら、sql認証も有効になっている。

これでmanagement studioで接続できないのなら、ファイアウォールを
疑ってみるとか

441 :NAME IS NULL:2007/09/09(日) 19:36:36 ID:n4fxWSxo
すみません、ょっとお伺いします。SQL Server 素人です。
自宅鯖でMSDE+ASPで遊んでいて、MSDEをSQL Server 2005 Express に
アップデートしたのですが、ASPのプログラムで、
SQL Server に書き込みできなくなりました。

[Microsoft][ODBC SQL Server Driver][SQL Server]sysservers に
サーバー '○○' が見つかりませんでした。
sp_addlinkedserver を実行して、サーバーを sysservers に
追加してください。

と表示されるのですが、具体的に何をどうしたら良いのでしょうか?


442 :NAME IS NULL:2007/09/09(日) 22:58:52 ID:???
>>441
君はリンクサーバーに接続しようとしてるから、リンクサーバーを追加すりゃいいんだよ。
その ASP プログラムって自分で作ったやつか?

443 :441:2007/09/09(日) 23:05:33 ID:n4fxWSxo
スミマセン、リンクサーバーがなんやらわかんなくて。
ASPは自分でつくったやつ。


Set objDBC = Server.CreateObject("ADODB.Connection")
objDBC.CommandTimeout = 60:
objDBC.ConnectionTimeout = 120:
objDBC.open C_DBName, C_DBID, C_DBPW:
Set ObjRS = Server.CreateObject("ADODB.Recordset"):
txtSQL = "SELECT * FROM t_カウント WHERE カウント名=情報ID'":
ObjRS.Open txtSQL, objDBC,3,3:
intProID = ObjRS.Fields("カウント値"):
ObjRS.Fields("カウント値") = ObjRS.Fields("カウント値") + 1:
ObjRS.Update:
ObjRS.Close:

444 :441:2007/09/09(日) 23:08:22 ID:n4fxWSxo
C_DBName は、ODBCのシステムDSNに登録してあります。
これだけじゃだめなの?

445 :441:2007/09/09(日) 23:15:11 ID:n4fxWSxo
webアプリで、ローカルサーバのSQL Serverに接続して
データを更新したいだけなのですが・・。

446 :NAME IS NULL:2007/09/10(月) 00:59:49 ID:???
>>443
ODBC で追加オプションは取れてるの?
ちなみにサーバーは (local)\SQLEXPRESS と指定するんだぞ。
ドライバは SQL Server Native Client を指定する。

いろいろわかってればもっと違うんだが、とりあえずそれでやってみ。
もう少し詳しいことを知りたければ、とりあえず ASP から SELECT @@version を実行して結果を表示してみるとかな。

447 :NAME IS NULL:2007/09/10(月) 01:05:32 ID:???
http://q.hatena.ne.jp/1189334981

448 :NAME IS NULL:2007/09/10(月) 01:09:12 ID:???
ちなみに、エラーの意味は
"君が指定したデータベース名は指定された SQL Server インスタンスの中にないよ"
っつー意味ね。

449 :441:2007/09/10(月) 04:49:10 ID:g0Bkdph5
>>446
> ODBC で追加オプションは取れてるの?
> ちなみにサーバーは (local)\SQLEXPRESS と指定するんだぞ。
> ドライバは SQL Server Native Client を指定する。
当たりでした。
ありがd 大感謝
m(__)m オヤスミナサイ

450 :NAME IS NULL:2007/09/10(月) 11:41:24 ID:???
>>441

ここも後始末しておいてください
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2115557&SiteID=7

451 :NAME IS NULL:2007/09/10(月) 16:40:30 ID:???
>>441
うわー
恥ずかし

452 :NAME IS NULL:2007/09/10(月) 16:53:24 ID:pZqYwMR/
すいません、質問です。
SQL Server2000 SP3を使用してRESTOREを行ったところ下記エラーがでて、データベースが開けなくなってしまいました。

Location: p:\sql\ntdbms\storeng\drs\include\record.inl:1447
Expression: m_SizeRec > 0 && m_SizeRec <= MAXDATAROW
SPID: 51
Process ID: 740

接続しにいこうとすると既定のデータベースを開けませんといった旨のメッセージが表示されてしまいます。

DBCCを実行しても、復元中です。実行できませんとメッセージが表示され、実行することすらできません。
なにか復元する方法ないでしょうか?

453 :NAME IS NULL:2007/09/10(月) 18:25:46 ID:???
>>452
>SQL Server2000 SP3を使用してRESTOREを行ったところ下記エラーがでて、データベースが開けなくなってしまいました。
 その手のアサーション関連の不具合をSP4で修正しているはず。
SQL Server 2000 SP4を用意して、リストアしてみたら。
ttp://support.microsoft.com/kb/841776/en-us
FIX: Additional diagnostics have been added to SQL Server 2000 to detect unreported read operation failures

ttp://support.microsoft.com/kb/827714/ja
[FIX] NOLOCK ヒントまたは READ UNCOMMITTED 分離レベルを使用するとクエリが失敗してリテール アサーションが発生することがある
>Location: Drive:\sql\ntdbms\storeng\drs\include\record.inl:1447


454 :NAME IS NULL:2007/09/10(月) 19:28:36 ID:pZqYwMR/
>>453
お返事ありがとうございます。SP4にして再度ためしてみました。

RESTORE DATABASEした結果、エラーメッセージが変わっただけで動作は変わりませんでした。

ファイル 1 で、データベース 'TEST'、ファイル 'TEST' の 1456 ページが処理されました。
ファイル 1 で、データベース 'TEST'、ファイル 'TEST_log' の 1 ページが処理されました。
メッセージ 7987、レベル 22、状態 1、サーバー TEST01、行 1
データベースの整合性の問題がデータベース 'TEST' から検出されました。DBCC CHEC
KDB および DBCC CHECKCATALOGをデータベース 'TEST' で実行する必要があります。


同じようにDBCC CHECKDBなどをすると、「データベース 'TEST' は開けません。復元中です。」と出て実行できません。

なにか他に対処法ありますでしょうか?
また最悪、復元が出来ない場合、バックアップファイルなどからデータを取り出すなどのことは可能なのでしょうか?
バックアップファイルをテキストエディタなどで覗くと、データは入っているようなのですが……。

455 :NAME IS NULL:2007/09/10(月) 19:36:51 ID:???
>>454
もしかしてRESTORE DATABASE 〜 WITH NORECOVERYでリストアしているって事ない?
WITH RECOVERYでリストアしてみたらどうなるかな?




456 :455:2007/09/10(月) 19:43:03 ID:???
>>454をよく読んでいなかった。
RESTOREが終わった時点で、整合性エラーを検出しているんだ。

ただ復元中って出ているから、データファイルの整合性をチェックしていて
時間がかかっているような気もする。


457 :452:2007/09/10(月) 19:44:07 ID:pZqYwMR/
>>455
WITH RECOVERYでやっても変わりないみたいです

458 :452:2007/09/10(月) 19:51:56 ID:pZqYwMR/
>>456
最初自分もそう思ったんですが、3時間ほどたっても変わらない状況です。
11MB程度のデータなんです。ディスクアクセスがたいしてあるわけでもなく、本当に復元中なのか謎な状態でして……。

459 :NAME IS NULL:2007/09/10(月) 20:14:37 ID:???
>>458
ここまできたらマイクロソフトに問合せてみた方が良いかも。

 TechNetやMSDN、パートナー契約を結んでいたら、契約に含まれている
回数までは無償で問合せできるし。

 以前、マイクロソフトに問合せた事があるけど、こういった
(お金を払って契約している)ユーザーに対しては、かなり親切に対応してくれるよ。


460 :452:2007/09/10(月) 21:06:18 ID:pZqYwMR/
>>459
そうですか。一度問い合わせてみることにします
どうもありがとうございました。原因などがわかったら報告にきますね

461 :437:2007/09/11(火) 06:34:23 ID:???
>>439,>>440

アドバイスありがとうございます。
いろいろ試してもだめだったのでVirtual Server 2005 R2にWindows Server 2008(32bit)入れて
まっさらな環境にしてSQL SERVER 2005(32bit)入れて自己解決しました。
64bit鬼門すぎ


462 :NAME IS NULL:2007/09/12(水) 15:50:43 ID:???
BACKUP DATABASE tablename TO DISK =
で出力デバイスをファイルにしたときファイルは
ローカルファイルじゃないとダメなのでしょうか?

ネットワークの共有フォルダだとエラーになるので
きっとそうなんだろうとは思いますが・・・・・

463 :NAME IS NULL:2007/09/12(水) 18:01:56 ID:???
>>462
実際に読み書きするのはSQLServerのサービスプロセス。
サービスのアカウントが読み書きできるところなら出来る。
普通はネットワークにはアクセスできないアカウントで動いているので結果的に出来ない。

464 :NAME IS NULL:2007/09/13(木) 18:45:05 ID:???
>>441
いい加減、>>450の後始末しろよw


465 :NAME IS NULL:2007/09/14(金) 09:15:16 ID:sLMOoozG
素人ですいません、SQL Server 2005 Express EdtionのService Pack2のUpdateが失敗して更新出来ません。
エラーコードは0x65Bです。
黄色い盾が消えずに困ってます、宜しくお願いします。


466 :NAME IS NULL:2007/09/14(金) 10:34:24 ID:vxnEF19a
バックアップとってるなら原因探すよりSP2で再インストールさせたほうがはやいかもよ
別なPCでテストしてからのほうがいいけど
軽く検索した感じ回避策はいまいち見つかってないようだし

467 :NAME IS NULL:2007/09/14(金) 11:49:05 ID:sLMOoozG
そうですか、ありがとうございます。

468 :NAME IS NULL:2007/09/14(金) 12:01:29 ID:UtGDR6zs
教えてください。
T-SQLで、列の規定値追加、変更は出来るのでしょうか?
ALTER TABLEでは出来そうにないんですが...

469 :468:2007/09/14(金) 14:45:52 ID:UtGDR6zs
自己解決しました。
ALTER COLUMNじゃなく、ADD CONSTRAINTを使えばいいんですね。
よりよい方法が他にあったら、教えてください。

470 :NAME IS NULL:2007/09/16(日) 13:29:03 ID:uviOaQk6
来週専門のほうでテストがあるんですがSQL Serverを勉強する際にいるSQLサーバーでなんかいいのありませんか?
なるべく軽いのでお願いします

471 :NAME IS NULL:2007/09/16(日) 19:48:54 ID:???
>>470
意味がよくわからんが、先生か友達に聞いたほうがいいんじゃない?
多分 SQL Server Express と SQL Server Management Studio Express をダウンロードすればいいんだろうけど
そこから途方にくれると思われ。

472 :NAME IS NULL:2007/09/16(日) 23:44:24 ID:???
>>470
Developer Editionでいいんじゃない。
Enterprise Editionと同じ機能で5000円位だし。


473 :NAME IS NULL:2007/09/17(月) 00:10:37 ID:???
>>470
SQL Server 2005 Express
SQL Server Management Studio Express
WebMatrix

この3個で十分。

WebMatrix ではなく、Visual C# の無料版でもいいけど。

(Webプログラミングしたいのか、クライアントのアプリを作りたいのか)

474 :NONAME:2007/09/17(月) 11:27:06 ID:NjKQqxCi
Microsoft Windows XP Home Edition
Microsoft Windows XP Professional
The microsft Operating systems.

475 :NAME IS NULL:2007/09/18(火) 17:52:28 ID:???
WinXPで、MSDE2000Sp4を使っているんですが、コマンドラインからアタッチを使用とすると

メッセージ 5173、レベル 16、状態 2、サーバー (SERVER)、行 1
ファイルを別のデータベースに関連付けることはできません。

とメッセージが出ます。
こういったエラーって何が原因なんでしょうか?

476 :NAME IS NULL:2007/09/18(火) 19:25:46 ID:???
>>475
コマンドラインからアタッチってのは sp_attach_db を自分で呼んでいるという意味か?
Enterprise Manager を使ったらエラー無くアタッチできると解釈していいのか?
普通に考えて "sp_attach_db の構文を正しく記述してないから" とは思わないのか?

プロファイラを起動して Enterprise Manager からアタッチするときどんな SQL 文が実行されているかをチェックしてみなさい。
ちなみに、エラーメッセージでぐぐったらそのエラーは別々のデータベースのデータベース ファイルをアタッチするように
sp_attach_db を呼ぶと返されるってさ。

477 :475:2007/09/18(火) 21:15:45 ID:???
>>476
レスありがとうです

バッチファイルでsp_attach_dbを実行しているんですが、
別の環境では同じバッチファイルでも問題なくアタッチが出来るという状態です。
問題が起こっている環境の場所へいけないのがネックなんですが。

別々のデータベースファイルをアタッチするって、指定してるmdfとldfが別のデータベースって
認識されているってことなんですかね?

478 :NAME IS NULL:2007/09/18(火) 23:53:58 ID:???
>>477
自分で SQL ステートメントを書いて実行してみれ。
同じバッチファイルでも何かの事情で違う SQL ステートメントが生成、実行されることだってあるだろ?
データベース ファイルを再度ちゃんとアタッチできる状態からコピーしなおしてみるってのもやってみな。

なんでエラーが起きてるのかはわからん。
バッチファイルが誤った SQL ステートメントを生成・実行しているのか、データベース ファイルに問題があるのか、・・・
ちなみにデータベース ファイルにはデータベース固有の GUID が振られており、データベース ファイル群の中に一つでも
異なる GUID を持つファイルがあると当該のエラーが出るらしい。

SQL Server でファイルとファイル グループのバックアップを復元する
http://support.microsoft.com/kb/281122/ja

このことを元にそのコンピュータや顧客の置かれている状況でどのような時にそんな状況が起きうるかとか、
どうすればいいかを想像してみれ。

479 :NAME IS NULL:2007/09/19(水) 00:03:47 ID:???
あとは、mdf だけ指定して sp_attach_db を実行すると LDF が勝手に作られるみたいだから、どうしようもなければそれでもいいかもな。

480 :475:2007/09/19(水) 15:38:29 ID:???
アドバイスありがとうです。

最終的に479氏の手段で稼動させることはできました。
エラーの原因までは結局つかめてないけどな。

…自分の不勉強さを呪うわ…orz

481 :NAME IS NULL:2007/09/19(水) 19:52:48 ID:???
すみませんどなたかご教授を。。。

windows2000のDドライブ上にSQLServer2000を
インストールして使用していました。

昨日Cドライブが死んでしまい、Dドライブはまだ生きているので
とりあえずDVDに全てCOPYをし、別HDDにOSから入れ直している状態なのですが
このDVD上のデータを再度インストールしたSQLServer上にリストアする事は
可能でしょうか?

教えてちゃんですみませんが、宜しくお願い致します。

482 :NAME IS NULL:2007/09/19(水) 20:09:29 ID:???
SQLの「データフォルダ」の全てのファイルをリストアすればいい。

master とか tempdb とか、お前さんが作った db名のファイルとか
があるフォルダが、データフォルダ。

483 :481:2007/09/19(水) 20:16:56 ID:???
>>482
早速のご返答有り難う御座います。

この場合のリストアって、
『フォルダ内のファイルを全部COPY』
ってことでよろしいでしょうか?

484 :NAME IS NULL:2007/09/19(水) 20:30:20 ID:???
運用中に突然壊れたとかでなければ動くようになるとは思うが、
丸ごとコピーは正規のバックアップ方法でも正規の復旧方法でもないから、
とりあえずやってみろとしかいえんな。



485 :NAME IS NULL:2007/09/19(水) 20:37:26 ID:???
上書きコピーでいくならサービスはとめてからやれよ〜

486 :481:2007/09/19(水) 20:53:09 ID:???
>>484
有り難う御座います!
やってみます。

487 :NAME IS NULL:2007/09/20(木) 00:37:40 ID:30mbiUwW
SQLサーバーデータベースの再編成ってどうやるの。
そもそも必要なの?


488 :NAME IS NULL:2007/09/20(木) 10:47:50 ID:???
>>487
再編成という言葉が何を意味しているのかわからないが。

489 :NAME IS NULL:2007/09/20(木) 10:57:32 ID:???
>>487
DBCC DBREINDEX または DBCC INDEXDEFRAG
が索引の再編成。これはデータの追加削除が激しいならまめにやったほうがいいな。
クラスタ化索引の再編は時間がかかるから、
総容量の大きなテーブルは非クラスタ索引にしておくのも一手。

データ部の再編は基本的に必要ない。
MSSQLは8Kの固定ページサイズなので空きページの再利用は自動でかつ効率よくやってくれる。
空きページをファイルシステムに返して開放したいなら
DBCC SHLINKDATABASE を使う。


490 :NAME IS NULL:2007/09/20(木) 15:56:09 ID:???
>>489
DBCC SHRINKDATABASE ね

491 :NAME IS NULL:2007/09/20(木) 16:48:59 ID:ZZNi8NHK
SQL Server2000 で、作成されているテーブルに付いてなのですが、

Managerから、該当するテーブルを開いてみると、データが入っているはずの
項目を見ても空になっています。
その際、そのセルにカーソルを合わせて、何か編集を行うとすると
「このセルは編集できません。」とエラーが出ます。

全てのデータがなっている訳ではなくて、ポツポツとあります。
こうなっているフィールドの型はntext型になります。

リンクテーブルやデータのエクスポートでAccessからみると、
どちらも正しくデータが入っています。
ただし、リンクテーブルの場合、全てのレコードでデータの変更は出来ません。

何か解決策はありますでしょうか?

ちなみに、一度デタッチ → アタッチをしてみましたが、変化はありませんでした。


492 :NAME IS NULL:2007/09/20(木) 17:22:31 ID:???
>>491
わかんないけど、Unicode で入ってて SJIS で表示できない文字でも入ってるんじゃないの?


493 :NAME IS NULL:2007/09/20(木) 17:27:38 ID:???
ntext型だとManagerからはちゃんと見れなかった気がするぞ。
他の方法で更新するしかなかったような

494 :NAME IS NULL:2007/09/20(木) 19:42:28 ID:30mbiUwW
>>489
どうもありがとう

495 :NAME IS NULL:2007/09/20(木) 20:03:14 ID:T4Z4T0FU
bcpでCSVをインポートする方法を教えてください。
接続してる状態じゃなければだめとかもわかりません

496 :NAME IS NULL:2007/09/20(木) 21:19:30 ID:K6Y78rP2
>接続してる状態じゃなければだめ

つうか、インポートするためにはSQLサーバに接続しないとダメなわけで…
(オフラインとかいう考え方あるなら、俺もやり方知りたい)

497 :NAME IS NULL:2007/09/20(木) 23:59:11 ID:???
>>495
1. bcp /?
2. bcp "-c" csv in でぐぐれ
3. 次のリンクを見れ
ttp://winofsql.jp/VA003334/msde050901234004.htm


498 :NAME IS NULL:2007/09/21(金) 14:30:11 ID:6dTeJjeC
SQL Server 2005 expressに関して質問です。

SQL Server MSEのログイン-新規作成で、他マシンのユーザを
Windows認証で追加したいのですが、他マシンのログイン名
(domain\username)が通りません。
[検索(E)]ボタンを押して「場所を指定してください」の[場所(F)]を
クリックしても、他マシンのドメインが現れません。

他マシンには管理者権限でパスワード設定済のユーザを作って
ありますが、そのユーザを追加できないのです。

考えられる原因について、どなたかアドバイス頂けませんか。

499 :NAME IS NULL:2007/09/21(金) 14:53:35 ID:???
>>498
Active DirectoryやWindows Domainにそのコンピュータや追加するコンピュータは参加してる?

500 :NAME IS NULL:2007/09/21(金) 15:09:51 ID:???
>>499
それぞれのマシンは同一ワークグループ内にあり、相互の共有
フォルダへのアクセスや、SQLServer認証でのサーバへの接続
は可能ですが、Active DirectoryやWindows Domainに関しては
「それが何か」ということ自体を知らないのが現状です。
不勉強で申し訳ありません。
一度調べてみます。ありがとうございました。

501 :NAME IS NULL:2007/09/21(金) 21:56:31 ID:9ro8Xx3l
>>498
ユーザアカウントの作り方からして間違っている。
Windows2000pro. or WindowsXPしかないワークグループ環境でWindows認証を
行う場合は、SQLServerにではなくコントロールパネルから"ユーザアカウント"
又は"管理ツール"→"コンピュータの管理"→"ローカルユーザとグループ"で
ユーザアカウントを作らなければならない。

ちなみに作成したアカウントが Administratorsグループに所属するとSQLServer
内では owner属性で扱われ全てのデータベース、テーブルで操作ができる。
対してUsersグループに所属する場合はSQLServerにConnectはできるけれど
どのデータベースも操作できない。当然、テーブルの読み書きもできない。
相応の権限のロールが必要。

ワークグループのみでもちゃんとWindows認証でリモート接続できるからな。

502 :NAME IS NULL:2007/09/27(木) 16:28:24 ID:???
Oracleからの移行でトリガの移行をしようとしてるんだけど構文が解らないので
エロイ人、教えてください・・・・

Oracleのトリガ構文は・・・・
CREATE OR REPLACE TRIGGER NULLPO.TRG_MONANEKO
BEFORE INSERT OR UPDATE
ON NULLPO.MONANEKO
REFERENCING OLD AS OLD NEW AS NEW
BEGIN
IF :NEW.NOTE IS NULL THEN
:NEW.NOTE := SYSDATE;
END IF;
END;
/
なんですが、SQLServerには:NEWやら:OLDが無いらしいのですが
これをTransact-SQLに置き換えるとどんな構文になるか教えてください。




503 :NAME IS NULL:2007/09/27(木) 17:09:31 ID:???
>>502
試行はしていない。
影響のあった行の参照はinserted/deletedの特殊表を使うが、
この表自体を変更することは出来ないので、
このケースでは必ず主キーが必要になる。
create trigger NULLPO.TRG_MONANEKO 
on NULLPO.MONANEKO
after insert, update as
update NULLPO.MONANEKO set NOTE = GETDATE() 
where PKEY in (select PKEY from inserted where NOTE is null)


504 :502:2007/09/27(木) 17:29:04 ID:???
>>503
エロい人ありがとう!

なるほど〜。随分、ボラクルとは作法が違うのですね。
これで解決しそうです。

ありがとうございました。

505 :NAME IS NULL:2007/09/27(木) 22:42:26 ID:aY73QQtY
SQLServerを使用して、c#.netをやってます!
さっそく質問なのですが、Datetime.Nowで値を取得するとyyyy/mm/ddまでの値しか取得できません。
後で排他処理をする時、時間まで取得したいのですがどうすればいいでしょうか?
それともDB側では暗黙的に時間も入っているのでしょうか?

506 :NAME IS NULL:2007/09/27(木) 22:55:14 ID:???
単純にC#でDateTime.Nowの値は、時刻も含まれるはずだが。


507 :NAME IS NULL:2007/09/28(金) 01:08:41 ID:???
>>506 の説明とあわせて、日付のみ指定した場合は DB 側で暗黙的に時間を入れることはない。
というかそんな質問が出てることは、テーブルの内容を SELECT して確認することもしていないのか?
あとはここでも読んでくれ。

ttp://www.atmarkit.co.jp/fdotnet/dotnettips/200customdate/customdate.html

508 :NAME IS NULL:2007/10/02(火) 00:36:18 ID:???
SQL Server 2005 Expressと、SQL Server Management Studio Expressで
フルテキスト検索のテストをしてるのですが、

USE [testdb]
GO
select *
from dbo.Customer
where contains(name, '太陽企画');

このようなコードでマッチしません。nameには'太陽企画'という
データはあるのですが、なぜでしょうか・・・。
フルテキストカタログとフルテキストインデックスは作成してて、
name like '太陽企画'ならマッチするんですが・・・。むずい・・・

509 :NAME IS NULL:2007/10/02(火) 00:46:07 ID:???
>>508
ちとこの2つは調べてみてくれ。
'太陽' や '企画' では検索できるか?
FREETEXTでは検索できるか?


510 :NAME IS NULL:2007/10/02(火) 21:11:03 ID:???
すいません。ありがとうございます・・・。
カラムの型をtextからntextとかnvarchar(MAX)のunicodeにしたら
ちゃんとマッチするようになりました。。。textだと、
'太陽'とか'企画'でもマッチしませんでした。。。

511 :NAME IS NULL:2007/10/03(水) 04:21:23 ID:BPM1pdYY
こんばんは。

SQL Server 2000を使用しています。
あるテーブルに200万レコード程のデータがあります。
カラムはint型が3つに、image型が1つです。
Enterprise Managerのタスクパッドを確認すると、そのテーブルの
サイズは約2GBとなっています。

DELETE分でレコードを約150万レコード程削除してもサイズは数MBしか
小さくなりませんが、約160万レコード程削除するとサイズが1.5GB程
小さくなり、0.5GB程になります。

DELETE件数とデータサイズが比例していないのですが、SQL Serverは
このような動きをするのでしょうか。
比例してサイズを小さくさせる事は可能でしょうか。

よろしくお願いいたします。

512 :NAME IS NULL:2007/10/03(水) 15:48:17 ID:???

DBCC SHRINKDATABASE

とか調べて

513 :NAME IS NULL:2007/10/03(水) 16:26:00 ID:???
>>511
DELETEした時点でサイズが縮小されるの?

SQL Serverでは一度確保した領域は、DBCC SHRINKFILEとかSHRINKDATABASEをやらないと
縮小されなかったはずだけど。
(ただしデータベース作成時に設定したサイズ以下にはサイズを縮小できない)

あと、DELETEするとトランザクションログにログが記録されるから、ログファイルのサイズ増えているような気も。


514 :NAME IS NULL:2007/10/03(水) 16:31:01 ID:???
SQL Server 2000 で、動作しているシステムがあります。
この度、もう1台サーバーと SQL Server 2000 を用意して、
現在のサーバー → 新サーバーに、リアルタイムにデータをコピーして、
もし、現在のサーバーが壊れた時に、新サーバーに切替えを行なう事を考え
ています。

SQL Server 2000 同士で、リアルタイムにデータをコピーする手法があれば教えて
頂けないでしょうか?


515 :NAME IS NULL:2007/10/03(水) 17:10:05 ID:???
>>511
>Enterprise Managerのタスクパッドを確認すると、そのテーブルの 
>サイズは約2GBとなっています。

テーブルのサイズはどこで見れますか?
データベースのサイズなら>>512-513のとおりだと思います。
オプションでDBの自動圧縮がオンになったりしてますか?

516 :NAME IS NULL:2007/10/03(水) 17:20:56 ID:???
>>514
スタンバイサーバーかレプリケーション

517 :511:2007/10/04(木) 03:15:48 ID:nx6lfmnn
みなさん、コメントありがとうございます。

>>512
SHRINK DATABASEを行ってもサイズはの変化はありませんでした。
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
11 1 263672 1280 261768 261768
11 3 29736 1280 29728 29728
11 2 1280 1280 1280 1280

>>513
>DELETEした時点でサイズが縮小されるの?
削除したレコード数によっては縮小される時とされない時があります。

>SQL Serverでは一度確保した領域は、DBCC SHRINKFILEとかSHRINKDATABASEをやらないと
>縮小されなかったはずだけど。
>(ただしデータベース作成時に設定したサイズ以下にはサイズを縮小できない)
DBCC SHRINKDATABASE,SHRINGFILEを実行してもあまり圧縮されませんでした。

>あと、DELETEするとトランザクションログにログが記録されるから、ログファイルのサイズ増えているような気も。
はい、こちらは300MB程増えていました


>>515
>テーブルのサイズはどこで見れますか?
タスクパッドのテーブル情報タブにて確認しています。

>オプションでDBの自動圧縮がオンになったりしてますか?
オフ(未選択)になっていました。

以下、タスクパッドでのテーブルサイズの詳細です。
イベント, 行,サイズ,インデックスサイズ
元データ, ,925099,2101752,248
レコード削除1(543478件) ,381621,2071048,248
SHRINK DATABASE ,381621,2087264,248
レコード削除(240467件)  ,2141154,769912,248

以上です。よろしくお願いいたします。

518 :NAME IS NULL:2007/10/04(木) 04:11:01 ID:???
>>517
>タスクパッドのテーブル情報タブ
が情報をどこから持ってきてるかによるな。
おそらく統計情報だろうから統計の更新が遅れてるだけじゃないかと思う。
情報タブの表示のスピードから見て少なくとも表示ごとに生の情報を持ってきてはいないはず。
sp_updatestatsを実行してみて変わらなかったらまた報告してくれ。

519 :512:2007/10/04(木) 15:18:01 ID:???
投げっぱなしもなんなんで

ttp://support.microsoft.com/kb/317375/ja
ttp://support.microsoft.com/kb/307487/ja?spid=2852&sid=1053
ttp://support.microsoft.com/kb/873235/ja
ttp://support.microsoft.com/kb/296386/ja?spid=2852&sid=1053

7.0用だけど
ttp://support.microsoft.com/kb/256650/

この辺も見ておくと幸せになれるかも

520 :NAME IS NULL:2007/10/05(金) 01:17:16 ID:???
>>511
だいぶ横道に逸れてるようだけど、内部構造を調べてもあんまり意味ないよ。
いったい何がしたいの?
いっぱいデータを消した後にデータベース ファイルのサイズを小さくしたいのであれば
DELETE ステートメントの実行後に DBCC SHRINKDATABASE を実行する。これだけ。
>>517 でサイズの変化がないとか言ってるけど、ファイルがぎっちぎちに詰まってるから
これ以上小さくできないだけ。
圧縮って言っても zip や lzh みたいにファイルを小さくするわけじゃなくて、
予約だけされていて使われてない空の部分を OS のファイルシステムに返すだけだから、誤解の無いように。

521 :511:2007/10/08(月) 10:47:57 ID:ejBEkIGa
回答が遅れ申し訳ありません

>>518
sp_updatestatsを実行してみましたが、変化はありませんでした。

>>519
ありがとうございます。これから内容を確認してみます。

>>520
このテーブルには毎日多くのデータが追加されるので一定期間で削除したいのですが、
前述のようにDELETEしてもテーブルサイズやデータファイルのサイズが小さくなりません。
この状態で運用を続けるとサイズがどんどん肥大化していくので、
どこかでディスク空き容量が無くなってしまう懸念があります。
内部構造的にどこかのタイミングで縮小されるようならいいのですが、
そういった情報を見つけることができておりません。

522 :NAME IS NULL:2007/10/08(月) 13:48:33 ID:???
>>521
クラスタ索引があるとデータリーフも索引の一部になるので削除したあとの再利用がされにくい。
おそらくページかエクステント内から完全にデータがなくならないと再利用されないと思う。
デフォルトだと主キーがクラスタ索引になるので、再利用を早めたいなら主キー索引の再編成が必要になるだろう。
データの追加削除が多いようなら、主キーを含めすべて非クラスタ索引にするのがいい。


523 :NAME IS NULL:2007/10/15(月) 05:10:41 ID:???
VB6からADOでSQL SERVER 2000を使う仕事をしています(Access+DAOからの移行です)。

WHERE節で複数条件をAndでつなぐと、やたらにSELECT(DELETEやUPDATEも)が遅くなるような気がしているのですが、
回避方法はありますでしょうか?

いったん単独条件でSELECTしておいて、残りはFilter指定でやるようにすると劇的に改善されるのですが、面倒です。
また、劇的に改善されるといっても絶対的な速度はたいしたことなく(元が死ぬほど遅いので)、
「Accessのときより遅い」とクレームがつきそうです。

インデックスは複数フィールドをまとめた状態で設定されているのですが、これがまずかったりするのでしょうか。
元がAccess+DBOなので、.Seek用に作られた名前付きIndexがそのまま移行している形になっています。

既出かとは思いますが、どうかよろしくお願いします。

524 :NAME IS NULL:2007/10/15(月) 05:19:00 ID:???
DBO ×
DAO ○
ですね。すみません。

525 :NAME IS NULL:2007/10/15(月) 09:42:50 ID:???
>>523
一般論から言えばそういうことはない。使い方を間違っているか別の要因が関係している。
具体的な例をあげてもらえば個別に解説できると思う。
ホントどISAMであるJETDB(DAO)からRDBへの移植はそれぞれ特性も違いかなり難しい。
単純にコンバートしようとするとパフォーマンスや動作上の問題が多数発生する。

526 :NAME IS NULL:2007/10/15(月) 17:39:56 ID:???
>>523
インデックスがうまく効いていないんじゃないかな。

クエリアナライザで実行プランを確認してみて。
あとは、クエリアナライザのインデックスチューニングウィザードを試してみるとか。


527 :NAME IS NULL:2007/10/18(木) 00:07:25 ID:2wtlRKYh
日時を格納するフィールドに、datetim型を使うか(n)charを使うか迷ってるんですが、どっちがいいですか?

528 :NAME IS NULL:2007/10/18(木) 07:55:20 ID:PHcDACtf
データ量を減らすために、charに一票

529 :NAME IS NULL:2007/10/18(木) 09:28:50 ID:???
>>528
DATETIMEは8byte。
でもまあ、日付だけで時刻はいらないような場合は悩むな。
ANSI-SQLのDATEとINTERVALは欲しい。

530 :NAME IS NULL:2007/10/18(木) 12:53:00 ID:???
お前ら意外と理解あるのなw

531 :NAME IS NULL:2007/10/18(木) 12:53:30 ID:???
↑誤爆です><

532 :528:2007/10/19(金) 00:52:16 ID:???
datetime型だ、SQLで加工するのがややこしかったので、データ量を犠牲にして文字列型でいくことにしました。
レスくれた方ありがとう。

533 :NAME IS NULL:2007/10/23(火) 17:38:48 ID:4X2HVnn9
SQLServer初心者です。
VB2005からSQLServer2005への接続について質問させて下さい。
同サーバーのプロジェクト名Test_dbにテスト接続はできるのですが、
データソース構成ウィザードで、テーブル、ビュー等の左側に「+」「−」
が無く、展開できません。 データソース、データセットとして実態を
取込めません。

ちなみにVB2005からAccessのテーブルをデータソース、データセットとして取込む事は
できました。

SQLServerから取込むにはどの様にするば良いでしょうか。
アドバイスお願いします。


534 :NAME IS NULL:2007/10/23(火) 18:27:30 ID:???
dtsxのパッケージを作成してサーバ側に配置インストールしたんですが動作しません。
開発環境PCのAと、サーバPCのBがあります。
パッケージの作成はAで行い、AのVS2005でのパッケージ作成とデバッグ実行では問題なくSQLが成功します。
buildしてできたdtsxファイルをAで開き、そこから直接実行しても問題なく完了します。

このdtsxをBにコピーし、ダブルクリックから起動して直接起動するとエラーが出ます。
エラー内容はどうも接続部分で躓いている様子です。
SQLServerにパッケージインストールウィザードで配置し、JOBに登録してから実行してもエラーが出て
エラーログなどを見るとやはり接続関係で止まっているようです。

逆、つまりBで実行できてAで実行できないというならわかるんですが(Aで作る時、接続先は外部PCのBへのConnectionになっているので)
Bで実行できないというのがよくわかりません。

エラー内容は
エラー:接続"server.testdb.sa" を取得できませんでした。接続が正しく構成されていないか、この接続に必要な権限が不足している可能性があります。

です。
どちらからも繋がらないなら構成が間違ってるのか権限がないのかというのは見直すのがわかるんですが
Aからは繋げてBから繋げないので、構成とか権限はあってるように思うんですが。

535 :NAME IS NULL:2007/10/23(火) 18:49:27 ID:???
データ量どうのこうのというより、データベースはデータが命なわけで、
ありえない日付とか挿入されてデータに不整合が発生しないように、ありえない日付の挿入をブロックしてくれる
日付型を使うべき。もちろん、大抵のアプリの場合、フロントエンドでも、ユーザービリティの観点から
たいていは日付のチェックを行うが、それがかりにバグってても、日付型にしておけば、
最後の関門のデータベースの日付チェックでありえない日付をはじいてくれるから安心。


536 :NAME IS NULL:2007/10/24(水) 01:41:06 ID:???
DATE型があれば、それでいいけどDATETIMEだと日付入れる場合時間なしで入れないと
いけないのに'2007-10-23 10:00'とか入れてしまうともう駄目

537 :NAME IS NULL:2007/10/24(水) 01:41:37 ID:???
今回のシステムはintで日付を持ってる。20071023みたいに。

538 :NAME IS NULL:2007/10/24(水) 07:53:08 ID:TfcxssxI
正当性の判定をユーザが作るなら、intで待ち受けてもいいかもな

20071303 をエラーとはじいたり
20071131 をエラーとはじいたり というチェックルーチンを作るのは結構めんどくさい

一番めんどくさいのは、うるう年判定

539 :NAME IS NULL:2007/10/26(金) 12:12:15 ID:???
初心者質問ですがよろしくお願いいたします。

コマンドからデータベースを作成しようとしていますが、データベース名に
変数を使うとうまくいきません。
変数を使ってうまく作成する方法はありますか?

ちなみにこの文で実行しました。

Use master;
GO
DECLARE @unko varchar(10)
Set @unko = 'unko'

begin
CREATE DATABASE @unko
end

----------------------------
以下、処理結果です。

Use master;

データベース コンテキストが 'master' に変更されました。
DECLARE @unko varchar(10)
Set @unko = 'unko'

begin
CREATE DATABASE @unko
end

メッセージ 102、レベル 15、状態 1、サーバー Temp\SQLEXPRESS、行 5
'@unko' 付近に不適切な構文があります。

540 :NAME IS NULL:2007/10/27(土) 04:55:10 ID:???
>>539
varchar の変数にステートメントをまるごと格納して、exec の引数として渡す。

541 :NAME IS NULL:2007/10/29(月) 10:56:52 ID:???
>>540
おお、以下のとおりやってみたら成功しました。
ありがとうございました。

Use master;
GO
DECLARE @unko varchar(10), @query varchar(100)
SET @unko = 'unko';
SET @query = 'CREATE DATABASE ' + @unko;

EXEC (@query)
GO

542 :NAME IS NULL:2007/10/29(月) 13:14:01 ID:???
MSSQLから、mysql用にデータベースのエクスポートをすることはできますか?
mssqlの知識が無いので、わからないのですが、
テーブルの定義やデータ等、テキストファイルだけでのエクスポートはできないのでしょうか?

拡張子がbakファイルのもらったのですが、
データのヘッダー1文字目に「TAPE」とあるので、
テープバックアップしたバックアップファイルで、これは単なるmssql用データなのでしょうか?

543 :NAME IS NULL:2007/10/29(月) 13:38:34 ID:???
>>542
エクスポートのやり方や形式に互換性なんて無い。
あとマルチまがいはやめたほうがいい。どっちかに移動した旨を書いておけ。

544 :sage:2007/10/29(月) 15:57:07 ID:7E2B0ILf
質問です。
SQLSERVER2000のSP3で、毎日のバッチ処理でデータを追加するテーブルがあります。
そのテーブルには主キーが設定していています。(仮に「キー」という列に設定したとします。)
この「キー」はデータを追加する際に現在の最大値から連番で振っています。
このテーブルのデータは、バッチ処理での追加はありますが、DELETEはありません。
UPDATEはしています。

DBの保守計画で、整合性チェックと最適化を毎日動かしていましたが、ある日、いきなり
整合性チェックと最適化JOBでエラーになり始めました。
「DBCC CHECKDB」で調べてみたところ、上記のテーブルで一貫性エラーが発生していると出ました。
設定してあった主キーを外し、「キー」で重複するデータを探したところ、データ内容がまったく
同じデータが何件か存在しました。

バッチ処理でデータを追加する際にこのようなデータが発生してもテーブルの主キーを設定している
のでエラーになるはずです。
このような現象が発生する理由をご存知の方はいないでしょうか。
宜しくお願いします。

545 :NAME IS NULL:2007/10/29(月) 16:48:33 ID:???
>>544
理由を聞きたいの?ディスク上にあるデータが壊れたか、SQL Server のバグ。


546 :NAME IS NULL:2007/10/29(月) 16:54:37 ID:???
>>544
その主キーは非クラスタ索引ですか?
それならば、誰かが索引を無効にした、またはIOエラーなどで無効になった可能性が高い。
BCPでロードしなおしたとかない?

547 :NAME IS NULL:2007/10/29(月) 17:05:47 ID:???
>>545
SQLSERVERのバグでしょうか。直してもまた別テーブルで同じ現象が出てきますし。

>>546
恐らく非クラスタ索引ではないと思います。
EnterpriseManagerのテーブルデザインで主キーを設定しただけで、インデックス等の設定はしていません。

548 :NAME IS NULL:2007/10/29(月) 17:09:40 ID:???
>>547
クラスタ化索引なら索引が無効になった段階でテーブルが使えなくなるので、
オペミスで無効にしてしまった線は消える。
他でも起きるならバグよりもディスクのIOエラーを疑ったほうがいいと思う。

549 :NAME IS NULL:2007/10/29(月) 17:21:43 ID:???
>>548
テーブルのデザイン時に主キーを設定したら、その項目はクラスタ化索引になるはず。
ディスクのIOエラーというのは、HDDの障害ということですよね?
交換したら直るのかもしれないということですか。
SQLSERVER2000を触るのが私だけですのでオペミスは考えていませんでした。
説明が足りずに申し訳ありません。

550 :NAME IS NULL:2007/10/30(火) 00:30:23 ID:???
とりあえず SP4 にするこったな。
SP4 じゃないとディスク I/O エラーが起きてもログ取れないし。

551 :NAME IS NULL:2007/10/31(水) 02:13:53 ID:???
コンプライアンス云々で実行されたSQLコマンドをすべてログにとれるDBを探していますが、
SQLserver2000あるいは2005は指定のDBに対してSQLが実行されたとき、
そのSQLコマンド(Insert Update Delete)をログにとることはできますか?


552 :NAME IS NULL:2007/10/31(水) 07:08:33 ID:???
>>551
トリガー

553 :NAME IS NULL:2007/10/31(水) 12:28:23 ID:???
>>551
サーバートレースでもいいかな。遅くなるけど。まあ全部ログに落としたらどんな DB 製品でも遅くなるか。

554 :NAME IS NULL:2007/10/31(水) 17:20:01 ID:???
>>552
もうちょっと詳しくお願いできませんでしょうか?

>>553
DBの処理をトレースするソフトを導入するってことですか?

555 :NAME IS NULL:2007/10/31(水) 23:15:27 ID:???
>554
ちょっとSQLServerの付属のプロファイラ実行してみろ。
ただ、全部残すと恐ろしいログのサイズになるので適当にフィルタして欲しいクエリだけ残るようにがんばってくれ。

トリガーだと更新されたレコードはわかるけどSQL自体はわからないね。
変更履歴のログという感じには使える。というか使ってる。

556 :NAME IS NULL:2007/11/01(木) 11:46:18 ID:zHDwSPx0
金額を切り上げた数字をSELECT文で書きたいのですがどうすればいいでしょうか?

1000⇒1000
1001⇒1100
1099⇒1100
と言う風に出したいのですが可能なのでしょうか?

557 :NAME IS NULL:2007/11/01(木) 13:03:37 ID:???
>>556
ttp://pc11.2ch.net/test/read.cgi/tech/1187667616/312

558 :NAME IS NULL:2007/11/01(木) 16:35:52 ID:???
SQL Serverをパブリッシャにして、外部のPostgreSQLをサブスクライバにして、
レプリケーションを行いたいと考えています。
単純に、PostgreSQL用のODBCドライバを組み込んで、SQL Serverからサブスクライバとして
登録しようとしましたが、
SQL Server側からは、OracleとIBM DB2しか見えていないようです。
どなたか原因が分かる方がいらっしゃいましたら、教えて下さい。

559 :NAME IS NULL:2007/11/01(木) 20:14:39 ID:???
>>555
実行したいのですが、ログがとれるとわからないと経費が下りないんで手元にモノがないのです
プロファイラというのを実行すればSQLコマンドのログを指定のフィルタを通したものだけ保存できると思っておkですか?

560 :NAME IS NULL:2007/11/01(木) 21:01:39 ID:???
>559
プロファイラはSQLServer付属のツール。
SQLServerすらも手元にないとでも?

プロファイラの理解はそれでおk

561 :NAME IS NULL:2007/11/01(木) 21:22:10 ID:???
>>559
いったいどんな会社だ?評価版とかあるだろうが。新人に何も教えず丸投げとか?
でも新卒だとしてももう半年以上経ってるんだしなあ。
ちょっとは隣の席の人とでも会話したほうがいいんでねーの?

562 :NAME IS NULL:2007/11/02(金) 21:11:31 ID:gdtcmQpZ
SQLserver2005EEというのがタダらしいのでそれで調べたいと思います
ありがとうございました

563 :NAME IS NULL:2007/11/03(土) 10:51:57 ID:???
>2005EE

エンタープライズ エディションと一瞬勘違いしたじゃないか w
エキスプレス エディションね

管理用のGUIツールが付かない点と、DBのログオプションが
シンプル(切り捨てモード)と言う以外は、同じように使えるんじゃないかな。

564 :NAME IS NULL:2007/11/03(土) 12:54:17 ID:???
SQL Server Management Studio Expressも思い出してあげてください

565 :NAME IS NULL:2007/11/03(土) 14:21:23 ID:???
思い出しました。
確かに、そういう便利な純正ツールもあるよな。

社内のデータベースを、エクスプレス・エディションで動かしたら
何か問題あるかな?(ライセンスの)

VisualStudioの奴は業務で使うとライセンス違反らしいが…

566 :NAME IS NULL:2007/11/03(土) 23:40:12 ID:???
エキスプレス エディションってなんかの汁でも出るのかよwww

567 :NAME IS NULL:2007/11/04(日) 12:23:30 ID:???
くだらんつっこみだなぁ
頭の悪さがにじみでてるな
アメリカンエキスプレスとか普通に言うし
どうでもいいだろう。


568 :NAME IS NULL:2007/11/04(日) 20:16:54 ID:???
汽車の窓からハンケチふれば牧場の乙女も花束投げる♪
エキスプレス、ビルヂング、ハンケチ・・あんにゅい感じがして好きだな。

eXPress EditionでXPの方がEnterprise Editionとかぶらなくていい。
ただWinXPとかぶるからMSはやらないだろうが。

569 :NAME IS NULL:2007/11/05(月) 00:31:24 ID:???
>>567
まあ気付いてると思うけど、それに突っ込みいれてる一番つまらないのは君だからね

570 :NAME IS NULL:2007/11/05(月) 13:31:36 ID:???
はいはい(苦笑

571 :NAME IS NULL:2007/11/05(月) 14:38:35 ID:wDZ2lOpO
初心者質問ですがよろしくお願いいたします。

SQL Server Management Studio 2005で
データベースの復元中に処理を中断したら、
データベース名(復元しています...)と表示されました。
データベースのプロパティを開こうとすると
「データベース'データベース名'は開けません。復元中です。
(Microsoft SQL Server、エラー:927)」
と表示されます。

それから3時間程ずっとその状態なんですが、
まってればそのうち復元が完了するのでしょうか??
どなたか原因及び解決方法が分かる方がいらっしゃいましたら、
教えて下さい。



572 :NAME IS NULL:2007/11/06(火) 13:35:58 ID:???
運用開始後、テーブル設計を変更(追加/更新)する場合、
更新版DBのテーブルを空にして、運用サーバを一旦落とし、
運用版→更新版にデータを取り込むんでしょうか?

運用版DBと更新版DBの構造を比較して、更新部分のSQL文を生成して
くれるツールがあるのでしょうか?

573 :NAME IS NULL:2007/11/06(火) 21:04:12 ID:???
新テーブル CREATE
旧テーブルから新テーブルへデータコピー UPDATE

単純にこれだけじゃないのか?

VB.NET とか、 ASP.NET で簡単にプログラム組めば終わりのはずだが

サーバを落とす必要性を考えた理由は?

574 :NAME IS NULL:2007/11/07(水) 00:02:19 ID:???
>572
エンタープライズマネージャでテーブルを変更するときのクエリを保存したり、
Visioでテーブル構造を取り込んでそれを反映したりとかできる。
自動で作られるクエリは一時テーブルにデータを移して作り直しだからデータ量が多いと結構痛いことになるかも。
データ量が多いテーブルで列追加くらいならalter tableを自前で書いてるよ。
列のサイズが変わったりとか大幅に変更になる場合は動かしながらは無理。いったん止めないと駄目だね。

575 :NAME IS NULL:2007/11/07(水) 09:15:33 ID:ou6vFdyT
すみません、初心者です。
知っていたら教えて欲しいのですが、
SQLServer2000使用で、フィールド数を300程度を設けたいのですが、
Access2003からSQLServer2000を参照する場合、
全部のフィールドを参照・編集することはできるのでしょうか?
確かAccessは使用可能フィールド数が255だったと思うのですが・・・


576 :NAME IS NULL:2007/11/07(水) 11:41:59 ID:???
質問です。

[サーバ]
WindowsServer2003
SQLServer2005

上記のサーバが複数台、LAN上に配置されています。
各サーバには、各サーバ上で動作するストアドがあります。
このストアドを更新する際、各サーバ間でVersionを合わせる必要があります。

私の知識では、各サーバ上でALTER PROCEDUREを流すことしか思いつかないのですが、
他に便利な方法等ありますでしょうか?

よろしくお願いいたします。


577 :572:2007/11/07(水) 13:11:47 ID:???
>>573>>574 レス、有り難うございます

> データ量が多いテーブルで列追加くらいならalter tableを自前で書いてるよ。

旧DBの新DBを完全比較して、更新用のDDLを生成してくれるツールがあると、
それをユーザに配布して、実行してもらうだけで済むので凄く楽なんですが。
すべての変更点をDDL文に落とすおは、私には厳しい感じです

次善策として、テーブルを空にした新DB.MDFを拠点の管理者に配布
して、アタッチして、旧DB.MDFのテーブルデータを全部取り込むし
かないのかな、と。
(これだと旧DB.MDFをDropした後に、新DB.MDF→旧DB.MDFに戻さない
といけないような)


> サーバを落とす必要性を考えた理由は?
一般ユーザの旧DBへのデータ更新を防ぐため、だったのですが、
一般ユーザがアクセスできないようにすれば、サーバは落とす
必要はないですね


578 :NAME IS NULL:2007/11/07(水) 15:26:40 ID:???
>>575
フィールド300もあるテーブルの設計に問題はないのかと・・・

579 :NAME IS NULL:2007/11/07(水) 16:00:40 ID:???
>>578
だよな。1フィールドの中に色々詰め込んでプログラムでばらせば半分以下だぜ。


580 :NAME IS NULL:2007/11/07(水) 17:24:03 ID:ou6vFdyT
>>578>>579
すみません、575です
仕様上どうしても255以上、300程度のフィールドを設けねばならず、
複数フィールドの内容を1フィールドにまとめずに処理をしたいのです

581 :NAME IS NULL:2007/11/07(水) 18:11:24 ID:Wr3F4zOP
200って1レコードに設定できる最大バイト数がきまってるってほんとか?

582 :NAME IS NULL:2007/11/07(水) 21:18:19 ID:???
SSISってなんだよ?
普通にC#でDBアプリケーション作っちゃいけないのかよ?

583 :まりも:2007/11/07(水) 22:55:38 ID:NVJ4rdlb
SQLServer初心者です。
DB内のハングル文字をウェブで表示したいのですが、可能可能でしょうか?
まずは、お聞きしたくてカキコしました。

584 :まりも:2007/11/07(水) 23:26:25 ID:NVJ4rdlb
SQLServer初心者です。
クエリで取得したDB内のハングル文字をウェブで表示したいのですが、化けてしまいます。
ハングル文字でちゃんと表示する事は、技術的に可能なのでしょうか?
サーバーOS:windows 2000 server(言語defaluet日本語/韓国語ほか追加済)SQLServer 2000
IIS5/Coldfusion5
表示側はUTF-8で、直書きしたハングル文字は正常に表示されていて、DBで取得した文字に関してのみ化けています。
スレ違いの気もするのですが、まずはDB側ハングル文字扱いの際の設定が正しいかどうか確認したくてカキコしました。
どうかよろしくお願いいたします。

585 :まりも:2007/11/07(水) 23:31:53 ID:NVJ4rdlb
フィールドの設定は、
nverchr
照合順序をKoreanWansung_CI_AS
にしてみましたが、だめでした。何が足りないのでしょうT。T


586 :NAME IS NULL:2007/11/08(木) 00:02:03 ID:???
たぶん、ハングルについて答えられる人は2chには居ないだろうな。。


587 :NAME IS NULL:2007/11/08(木) 00:56:01 ID:???
DBにハングルでちゃんと記録されているなら
アプリかWebサーバの問題。
同じようなことをMysql&Apacheで経験しているが
そんときはKoreanのクソサーバが原因だった。

588 :まりも:2007/11/08(木) 00:56:21 ID:fOua6aLw
ガーン!2chならいらっしゃるかと・・

589 :まりも:2007/11/08(木) 01:00:38 ID:fOua6aLw
>587様
ありがとうございまs。
DBにハングルが記録されているかどうかの確認ですが、
例えば、エンタープライズマネージャーでデータを表示し、
フィールド内の文字列をコピペして、
テキストでハングル表示されれば、
ちゃんと記録されていると判断してますが、それはOKでしょうか?
それだけでも、切り分けられれば前に進みます。

590 :まりも:2007/11/08(木) 01:13:10 ID:fOua6aLw
SQLServer自体にハングルに対応するための言語パックみたいなものが
必要なのかと思っていたのですが、そうでなければ、クエリ取得から、
出力時のエンコードの問題になるのかと。。
DB側は関係ないんですかね。。何の文字が入ってても。。

591 :まりも:2007/11/08(木) 01:15:20 ID:fOua6aLw
はぁ。。まりも、まりもっこりしちゃいそうです。。

592 :NAME IS NULL:2007/11/08(木) 10:49:04 ID:???
>>580
複数フィールドをまとめるとか言っている時点で失礼だがDBに対して
あまり知識がないと思われ・・・試しにその仕様というのを簡単にここに書いてみれば
幸せになれるかも。

あくまで300フィールドで突き進むというのなら止めはしないが・・・

ちゃんと正規化してその数値なら私の知らない異次元の方なので
ごめんなさいです。

593 :NAME IS NULL:2007/11/08(木) 11:56:28 ID:???
とりあえずここは邦人スレの方向でお願いしますニダ

594 :NAME IS NULL:2007/11/08(木) 14:05:32 ID:???
>>575
こういう質問は素直にMSに投げた方が良いと思われ
仕様の限界を超えた場合の挙動のテストなんてユーザがやるか?普通。

595 :NAME IS NULL:2007/11/08(木) 17:52:35 ID:???
>>575
試しにSQLServerでテーブル作ってみた
create table foo(
fld001 varchar(50) primary key,
fld002 varchar(50),
...以下 fld300まで続く

で、作成時に
警告: テーブル 'foo' が作成されましたが、最大行サイズ (15658) が行ごとの最大バイト数 (8060) を超えています。
このテーブルの行の INSERT または UPDATE は、結果の行の長さが 8060 バイトを超える場合は失敗します。
なんてのが出た。
次にACCESS2003でODBC接続でリンクした場合、fld255までしか見えない。
次にADPファイルで接続した場合、fld300まで見えた。
適当にデータを入れたり(全フィールドには入れなかった)したけど特にメッセージは出なかった。

面倒なのでこれで終わり。


596 :NAME IS NULL:2007/11/09(金) 11:45:15 ID:SU8Cv9DR
declare @cursor int;
exec sp_cursoropen
@cursor=@cursor output,
@stmt=N'exec sp_tables';

これを実行すると、exec sp_cursoropen の実行時に
「キーワード 'declare' 付近に不適切な構文があります。」
といわれてしまうんですが、
sp_cursoropenの@stmtの中にexecは使えないのでしょうか?

597 :NAME IS NULL:2007/11/11(日) 23:20:18 ID:???
cursorが予約語だから。

598 :OYUnJxJmSZZQEzCKM:2007/11/12(月) 09:52:51 ID:???
n91BW5 <a href="http://ognmaskkkhqu.com/">ognmaskkkhqu</a>, [url=http://gaahjwealbyu.com/]gaahjwealbyu[/url], [link=http://rawghapkgbyf.com/]rawghapkgbyf[/link], http://iwhsckinjjoo.com/

599 :gvnVQkmoAsluF:2007/11/12(月) 11:29:33 ID:???
UtH63y <a href="http://yibmputambbu.com/">yibmputambbu</a>, [url=http://cefygaeykdxg.com/]cefygaeykdxg[/url], [link=http://uvsxlmglxneg.com/]uvsxlmglxneg[/link], http://pprnrtqhdjkg.com/

600 :NAME IS NULL:2007/11/12(月) 23:59:31 ID:GUgahVXu
'とか"とか%とかは

' はSQL文のシングルコートと競合する可能性があるので使わないか ''(シングルコート2つ)で記述する
" はSQL文やプログラム内のものと競合するので使わない
% はワールドカードで使うので使わない

という認識をしてますが間違ってますか?
上記以外にもSQL文につかうとまずい文字ってありますか?

601 :NAME IS NULL:2007/11/13(火) 00:13:27 ID:xXvnlMUm

SQLServer2000で稼働させていたストアドプロシージャを新しいマシン上でSQLServer2005に移行して動かしたところ、
マシンのスペックはCPU、メモリともに大幅に増強されているにも関わらず、パフォーマンスが落ちてしまいました。
どんな原因が考えられるでしょうか?
統計情報は更新しています。

602 :NAME IS NULL:2007/11/13(火) 00:20:47 ID:???
>>601
そこでエスパー伊藤さんの出番ですよ。

603 :QLEuuESiSoFmQbem:2007/11/13(火) 09:43:03 ID:???
LboqPZ <a href="http://cdvaulivohjq.com/">cdvaulivohjq</a>, [url=http://hjxlqwjuecuj.com/]hjxlqwjuecuj[/url], [link=http://ktpitziugdui.com/]ktpitziugdui[/link], http://kqugtelnbwjk.com/

604 :NAME IS NULL:2007/11/13(火) 11:48:02 ID:ix6NkP0r
トランザクション分離レベルについて質問です。
トランザクション分離レベルを常にREPEATABLE READ
にしておきたいのですが、そのような設定は無理なのでしょうか?
いくつか解説を見ると、
トランザクションの最初に、
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
として、実行することと書いているのですが、
これだと、毎回書かないといけないので、めんどくさいのですが。

605 :NAME IS NULL:2007/11/13(火) 12:26:07 ID:???
>>604
MSSQLではSET TRANSACTION ISOLATION LEVELは
接続に対する命令なので接続後に1回書けばいい。
BEGIN TRANSACTION毎に書く必要があるのはPostgreSQLがそう。

606 :NAME IS NULL:2007/11/13(火) 23:43:33 ID:???
>>601
情報を出したくないなら、この手の手順でボトルネックを切り分けて
ttp://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx

SQL Server 2000との状況の差とか絞り込んでみるくらいかな



607 :FCRVPWWCTaiEXm:2007/11/14(水) 03:30:00 ID:???
FUphgd <a href="http://axtymoylwxul.com/">axtymoylwxul</a>, [url=http://yomtvxeqvjpo.com/]yomtvxeqvjpo[/url], [link=http://dmfdrlwbhwsf.com/]dmfdrlwbhwsf[/link], http://tjqoemklpenf.com/

608 :NAME IS NULL:2007/11/14(水) 23:55:10 ID:???
たとえば項目が2000個ある場合など、どのようにテーブル設計すればよろしいでしょうか?

TEST-0001:123
TEST-0002:789
 :
 :
TEST-2000:999

609 :wWdAsGeFEgavFdGzdkN:2007/11/15(木) 17:59:27 ID:???
Hi! Nice site!

610 :Vista:2007/11/16(金) 17:51:30 ID:klWd0S4A
Vista+MSDE2000について質問です。

Vistaにサポート外のMSDE2000をインストールしたらうまく動作しました。

ところが、
XPからネットワーク接続できますが、
Vistaからは接続できません。

ファイアウォールやUACを無効化してやってみましたが、
現象変わらずです。

子機Vistaから親機VistaのMSDE2000に接続する方法を
どなたかしりませんか?


611 :NAME IS NULL:2007/11/16(金) 19:44:53 ID:vV6+8oUu
うまく動作してへんやん

612 :NAME IS NULL:2007/11/16(金) 20:16:47 ID:BR8EDWie
サポート外やん

613 :NAME IS NULL:2007/11/16(金) 22:26:17 ID:XD+hACtW
TSVファイルのインポート方法で質問です。

現在、TSVファイルをインポートするプログラムを作成中なのですが
BCPかBULK INSERTを使用しようと思っています。

問題はこのTSVファイルの末尾5行が
サマリーレコードになっており、カラム数が他の行とあっていません。

アプリで末尾5行にTABを付加してインポートした後に削除してもいいのですが
このファイルには数百万レコードのデータが格納されており性能劣化を懸念しています。

末尾5行は固定なので高速に削除するか編集する方法はありますか?
もしくは、BCPに末尾5行を読み込まないか不足しているカラムを
強引にインポートする方法はありますか?



614 :NAME IS NULL:2007/11/19(月) 09:50:11 ID:???
SQL Server 2000をSQL Server認証モードで使用しています。
saのパスワードをいつ変更したのか、最終変更日時を調べる
方法はあるのでしょうか?
もしパスワードハッシュが見られるのでしたら、その方法でも
結構です。
よろしくお願いします。


615 :NAME IS NULL:2007/11/19(月) 21:08:26 ID:???
SQLserver2000を勉強中ですが

自動コミット トランザクション モード (SQL Server 既定)
明示的なトランザクション モード
暗黙のトランザクション モード

上記のどのトランザクションモードか調べるにはどうしたらいいでしょうか?

616 :NAME IS NULL:2007/11/20(火) 10:26:07 ID:???
SQLServer2005で Oracleのシーケンステーブルのような
テーブルを作成したいと考えていますが
SQLServer2005で実装するには、どのようにすれば良いでしょうか?

自分で調べてみたのですが、オートナンバー型はあるようですが
Oracleのシーケンスのように、使えるものが見つかりませんでした。


617 :NAME IS NULL:2007/11/20(火) 20:31:29 ID:???
DBCC CHECKIDENTは?

618 :tYvJaTsHIKe:2007/11/20(火) 21:34:02 ID:???
uYHUqI <a href="http://zmnudthsdmgp.com/">zmnudthsdmgp</a>, [url=http://tsxpirngvqdy.com/]tsxpirngvqdy[/url], [link=http://stdighdaghwq.com/]stdighdaghwq[/link], http://ofozxkryhdxf.com/

619 :jUxTZcnlcjZZ:2007/11/20(火) 21:38:23 ID:???
oqgQ6A <a href="http://oduvhmrkjdse.com/">oduvhmrkjdse</a>, [url=http://maumxwoahabq.com/]maumxwoahabq[/url], [link=http://ztxjxhqdrabs.com/]ztxjxhqdrabs[/link], http://pillyztikfvq.com/

620 :NQxSatNqZIaCVDmI:2007/11/20(火) 21:56:59 ID:???
PjGPCa <a href="http://ooqjykjspjbo.com/">ooqjykjspjbo</a>, [url=http://aiepdwnabzmx.com/]aiepdwnabzmx[/url], [link=http://aremhwricrfc.com/]aremhwricrfc[/link], http://sdqznccfnyos.com/

621 :giQpjLbFZgCdb:2007/11/20(火) 21:58:50 ID:???
WHfbGU <a href="http://nctgynkrivuq.com/">nctgynkrivuq</a>, [url=http://soltoilgbcfy.com/]soltoilgbcfy[/url], [link=http://awmlwkpenvhm.com/]awmlwkpenvhm[/link], http://xgmdqgmqfefp.com/

622 :NAME IS NULL:2007/11/21(水) 01:40:58 ID:???
>>616
主処理のトランザクションを開始する前に独立したトランザクションで必要な番号を採っておく。
または主処理とは独立したセッションを開きそこで番号を取得する。
主処理のトランザクションに採番処理を含むとデットロックやパフォーマンスの低下を招く。

623 :NAME IS NULL:2007/11/21(水) 09:53:17 ID:???
>>617
>>622

ありがとうございます。
DBCC CHECKIDENTでも代用できる部分があったのですが
どうしても、番号だけ取得したい場合に
無駄なデータが増えてしまってどうも無駄な気がしたので聞いてみました。。

現在は、裁判用テーブルを作成して テーブルロックをかける→値取得→アップデート
という流れで実現可能か、確かめてみている所です。



624 :NAME IS NULL:2007/11/21(水) 10:03:09 ID:???
>>623
裁判 ×
採番 ○

625 :QCWLsAdoJxLcfdnxi:2007/11/23(金) 00:23:33 ID:???
http://haimba.cn windows mp3 downloads

626 :JIfZlDLVMthqOUTV:2007/11/23(金) 21:15:16 ID:???
http://kgnsye.cn/imax-california.html Imax california
http://kgnsye.cn/california-dept-of-corporation-htm.html California dept of corporation htm
http://kgnsye.cn/single-family-homes-carlsbad-california.html Single family homes carlsbad california
http://kgnsye.cn/archangel-tattoo-design.html Archangel tattoo design
http://kgnsye.cn/blue-book-pricings-for-atv.html Blue book pricings for atv

627 :ZFQqRMDNHmN:2007/11/23(金) 21:15:37 ID:???
http://kgnsye.cn/imax-california.html Imax california
http://kgnsye.cn/california-dept-of-corporation-htm.html California dept of corporation htm
http://kgnsye.cn/single-family-homes-carlsbad-california.html Single family homes carlsbad california
http://kgnsye.cn/archangel-tattoo-design.html Archangel tattoo design
http://kgnsye.cn/blue-book-pricings-for-atv.html Blue book pricings for atv

628 :XgtcfwMcSu:2007/11/24(土) 00:50:00 ID:???
http://ktmyve.cn/escort-monique-new-york.html Escort monique new york
http://ktmyve.cn/laser-vaginal-rejuvenation-new-york.html Laser vaginal rejuvenation new york
http://ktmyve.cn/fetish-restaurant-new-york.html Fetish restaurant new york
http://ktmyve.cn/pda-cube-x-serial-rubik-pocket-pc.html Pda cube x serial rubik pocket pc
http://ktmyve.cn/ear-piece-for-blackjack-pda.html Ear piece for blackjack pda

629 :mYOzKnXrxShgAzzKpL:2007/11/24(土) 17:40:58 ID:???
http://bdzwbn.cn/night-mp3 night mp3

630 :KRpmfGVKkrchrbPE:2007/11/24(土) 20:28:23 ID:???
http://bfsnbw.cn/mp31 renegade master

631 :RpNeGYzbR:2007/11/24(土) 21:53:22 ID:???
http://bfsnbw.cn/mp32 call me

632 :GzVandRqdFO:2007/11/25(日) 06:07:24 ID:???
http://bfsnbw.cn/mp38 white tail deer rutting season


633 :NAME IS NULL:2007/11/26(月) 06:54:19 ID:???
test

634 :DfNimCJVHDJVoRwhi:2007/11/27(火) 18:49:59 ID:???
geiKo5 <a href="http://mjjhciipgweo.com/">mjjhciipgweo</a>, [url=http://dejayrtmdeqd.com/]dejayrtmdeqd[/url], [link=http://nerirslwicpb.com/]nerirslwicpb[/link], http://ftaqmvkzjqfo.com/

635 :NAME IS NULL:2007/11/28(水) 11:14:13 ID:???
nanikore?

636 :NAME IS NULL:2007/11/30(金) 01:39:58 ID:???
ストアドプロシージャで以下のような感じで、hoge列の値を戻り値としたい場合は
どうのように記述するのでしょうか?

返されるレコードは必ず1件のみです。
SELECT hoge FROM Foo WHERE hoge = 1

637 :NAME IS NULL:2007/11/30(金) 12:21:24 ID:???
>>636

ストアドプロシージャの構文覚えてきなさい。
まず、変数の宣言とDISTINCTについて勉強しましょう。

638 :NAME IS NULL:2007/11/30(金) 14:43:55 ID:???
ストアドプロシジャ化する必要があるのかな?
あと、値を返すだけだったらストアドプロシジャよりはストアドファンクションの方が楽だったりするし。
(ストアドプロシジャもOUTPUTオプションで戻り値を返す引数として宣言できるけどね)

ちなみに、今回の要件だったらストアドプロシジャ化しなくても、以下の構文で取得できる。
(hogeはINTだと仮定)

DECLARE @hoge INT
SELECT @hoge = hoge FROM Foo WHERE hoge = 1





639 :NAME IS NULL:2007/11/30(金) 18:29:58 ID:???
DECLARE @hoge INT
@hoge = 1
でいいと思う

640 :NAME IS NULL:2007/11/30(金) 20:14:18 ID:dJBxApwF
ACCESSからSQL Serverのテーブルをリンクしてます。
カレントDBのADODBコネクションに対してひとつのトランザクションで
多数のリンクテーブルを結合して結構複雑なSELECT文と
UPDATE文やINSERT文やDELETE文を混在させていっぱい実行したとき、デッドロックっぽいものが起きます。
(トランザクションの途中のUPDATE文でACCESSで「ODBC接続に失敗しました」とエラーが出るんだけど、
 それまでに何回かはおなじUPDATE文が成功しています)
んで、SQL Server Profilerで様子を見ると、
ACCESSではひとつのトランザクションでおこなっているはずなのに複数のSPIDを使ってるではないですか!

てことは自分で自分に対してデッドロックしてるのでは?と思うのですが、当たってるでしょうか。

んで、回避方法はあるでしょか・・・結構複雑なSELECT文をビューや関数にするといいのかなぁ。。
ファイルがインプットだからストアドプロシージャはちときついですのん。

641 :NAME IS NULL:2007/11/30(金) 20:57:11 ID:???
             ____
           /      \
          / ─    ─ \
        /   (●)  (●)  \
        |      (__人__)     |  それはない
         \     ` ⌒´    ,/
 r、     r、/          ヘ
 ヽヾ 三 |:l1             ヽ
  \>ヽ/ |` }            | |
   ヘ lノ `'ソ             | |
    /´  /             |. |
    \. ィ                |  |
        |                |  |


642 :NAME IS NULL:2007/12/01(土) 22:44:48 ID:???
Developer Edition についてですけど、

ttp://www.microsoft.com/japan/sql/editions/developer/default.mspx
Developer Edition は、実運用環境での稼動は出来ませんが、実運用で利用する Enterprise Edition 環境へのシームレスな移行が可能です。

これって個人的に自宅で使う分にはOKって事?


643 :NAME IS NULL:2007/12/01(土) 22:46:09 ID:???
自宅で使うならトライアル入れておけばいいだろ。

644 :NAME IS NULL:2007/12/01(土) 22:55:30 ID:???
いや、勿論そうしますけど w 、Developoer Edition の条件はそういう風に捉えて良いのかなと思ったわけで。

645 :NAME IS NULL:2007/12/01(土) 23:01:47 ID:???
自宅とか関係なく、開発用に使う分ならいい。

646 :NAME IS NULL:2007/12/01(土) 23:07:41 ID:???
了解です m(__)m

647 :NAME IS NULL:2007/12/02(日) 19:58:43 ID:???
実行プランでindex seekとかhash matchとか出ているのですが
hash matchってどういう意味っすか?

648 :NAME IS NULL:2007/12/02(日) 23:13:32 ID:???
ハッシュ結合

649 :初心者:2007/12/02(日) 23:17:41 ID:r6XgxIY/
はじめまして。初心者です。

突然ですが質問があります。
SQL SERVER 2005 で、自動的(1時間ごとに)にバックアップをとり、48時
間分のファイルを保存しておきたい時はどのようにしたらいいのですか。
みなさまのお力をお貸しください。(__)

650 :NAME IS NULL:2007/12/02(日) 23:27:54 ID:???
まず、ログファイルの管理方法をどうするのか。
バックアップファイルのサイズがどの程度なのか。
スケジューラを使うのか等を決めた方がいいよ。

651 :初心者:2007/12/02(日) 23:34:06 ID:r6XgxIY/
name is null さん
返答ありがとうございます。

基本的にフルバックアップです。
サイズはは100メガくらいです。
スケジューラは使います。
ログもそのまま保存します。

652 :NAME IS NULL:2007/12/03(月) 10:43:12 ID:???
name is null さん
name is null さん
name is null さん

653 :NAME IS NULL:2007/12/03(月) 14:21:13 ID:???
>>651
そこまで決まってて、何が聞きたいんだ?
俺、エスパーじゃないし、、、

654 :初心者:2007/12/03(月) 15:02:44 ID:ukVIXvlY
超初心者で、上司に頼まれて徹夜でしらべてたっす。
定期バックアップは分かりました。
1時間ごとのバックアップを取り48時間分のデータのみ保存しておきたいときは
何をどのようにすればいいのですか?
その48時間以降のものは削除する方法といいますか。

よろしくお願いします。


655 :NAME IS NULL:2007/12/03(月) 15:58:25 ID:???
間隔48hのスケジュールでバックアップデータを48種類作成し、上書きすればいいんじゃね?


656 :初心者:2007/12/03(月) 16:31:07 ID:ukVIXvlY
>>655
ありがとうございます。やってみます。


657 :NAME IS NULL:2007/12/03(月) 22:52:15 ID:G/RsR7SD
単にテーブル名に変数を使いたいのですが無理なのでしょうか?
SELECT * FROM @TABLE

テーブル変数ってのは調べましたが目的が違うようですし…。

658 :NAME IS NULL:2007/12/03(月) 23:48:17 ID:GpJGGX+L
OracleDBに対してクエリを投げるときに変数は無理?

659 :NAME IS NULL:2007/12/04(火) 00:51:51 ID:???
>>657
EXECUTEかsp_executesqlを使うといいかも。
※ただしSQLインジェクションには注意。
 SQLインジェクション対策のため、sp_executesqlを推奨。

(例)
EXECUTE('SELECT * FROM ' + @TABLE)


660 :NAME IS NULL:2007/12/04(火) 00:54:15 ID:???
>>658
> OracleDBに対してクエリを投げるときに変数は無理?

Oracleとはリンクサーバーとして接続?
「変数」ってどんな事をやりたいのかが判らないけど、
問題なく使えると思うけど。




661 :NAME IS NULL:2007/12/04(火) 09:25:14 ID:2qzlgR1W
658です。SQL Server 2005使ってます。
OLEデータソースのアクセスモードをSQLコマンドにしてクエリを直接入力する時に変数使いたいんですけど、
OLEDB接続マネージャがOracleを指していると、変数で?が使用出来ないんですよね。
更に、必ず、OKボタンで警告でるんですよ。。。
コンポーネントのロケールIDのコードページがなんちゃらかんちゃらって訳わからんとです。

662 :NAME IS NULL:2007/12/04(火) 12:40:55 ID:???
test

663 :657:2007/12/04(火) 13:32:19 ID:???
>>659
thx!!やってみます。

664 :657:2007/12/06(木) 13:27:41 ID:???
教えて戴いたsp_executesql 試してみましたが、こちらもテーブル名で変数の利用はできませんでした・・・。
スマートじゃないけど諦めてIF文で分岐させて、そのままSQL記述することにしまつ

665 :NAME IS NULL:2007/12/06(木) 15:31:09 ID:???
>>664
なんか勘違いしていると思われ。SQL ステートメントを varchar 型で作って sp_executesql に渡すんだよ。
こんな感じ。


DECLARE @SQL_STATEMENT as varchar(255)
SET @SQL_STATEMENT = 'SELECT * FROM ' + @TABLE -- CAST が必要な場合は適宜 CAST する
PRINT @SQL_STATEMENT -- これで SQL ステートメントを表示して、中身が正しいか確かめる
EXECUTE sp_executesql(@SQL_STATEMENT) -- 実際に SQL ステートメントを実行する

666 :NAME IS NULL:2007/12/06(木) 19:11:38 ID:???
SQL Server 側のトリガで、接続元クライアントの情報(IPアドレス、コンピュータ名など)
を取得するにはどうしたらよいでしょう?

無理でしょうか?


667 :NAME IS NULL:2007/12/06(木) 19:22:35 ID:???
>>666
SQL Server 2005以降ならSQL CLRでプロシジャを作ればできると思う。



668 :NAME IS NULL:2007/12/07(金) 01:43:39 ID:R8ptFJiN
ReportingServicesの質問もここでいいのかな?
Reporting Services 2000を別サーバにあるReporting Services 2005に移行したいのですが、
なんかいい方法ないですか?
Reporting Services 2005側はインストールしただけなので何でも出来ます。
なんにせよ情報が少なすぎて・・。

669 :NAME IS NULL:2007/12/07(金) 10:52:06 ID:W82n5Pzl
ADOスレで聞いていましたが、スレ違いのようなのでこちらに移動してきました。
以下転載+追記です。 何か対応方法をご存知の方がいれば、教えていただけたらと思います。

環境:
Win2003ServerR2 SP2 英語版 最新パッチインストール済み
SQL Server 2000 Standard SP3

現象:
以下の内容でDBを新規作成しました。
"CREATE DATABASE MyTestDB
ON PRIMARY (NAME = MyTestDB_DAT ,FILENAME = 'D:\MyTestDB\MyTestDBData.mdf', SIZE = 1MB,FILEGROWTH = 10%,  MAXSIZE = UNLIMITED)
LOG ON (NAME = MyTestDB_LOG, FILENAME = 'D:\MyTestDB\MyTestDBLog.ldf',SIZE = 1MB,  FILEGROWTH = 10%,  MAXSIZE = UNLIMITED )"

次にEnterprise Managerを使って、作成したDBの完全バックアップ→差分バックアップを行いました。
この時点では完全・差分共にバックアップは正しく取れて、リストアも可能です。
この後ntbackupを使ってD:\以下にあるDBには関係の無いファイルをバックアップすると、
MyTestDBのリストアダイアログを表示したとき作った覚えのないバックアップセットが自動的に作られてしまい、DBが復旧できなくなります。
また、D:\MyTestDB1 D:\MyTestDB2 と複数DBを作って同じことを試すと両方のDBに影響が出ます

その後調べたところ、ntbackupの実行でmsdbのバックアップ関連のテーブルに不要なレコードが追加されていることがわかり
不要レコードの削除で、見かけ上は不要なバックアップセットを消すことができました。
しかし、この状態では完全バックアップは問題なくリストアできますが、差分バックアップのリストアに失敗します。

差分バックアップをリストアした場合のエラーは以下のような内容でした。
Microsoft SQL-DMO (ODBC State: 42000)
Cannot apply backup on device 'BAKファイルのフルパス' to database 'MyDB'. RESTORE DATABASE is terminating abnormally.
ntbackupを実行せず、DBのバックアップのみ行った場合は特に問題なく動作しています。

670 :664:2007/12/07(金) 14:44:21 ID:???
>>665
すみません。詳しく書いてなかったのですが、OPENXMLでWITH句?にテーブル名割り当てしてるので、
このテーブル名には変数使えないみたいです。


671 :NAME IS NULL:2007/12/07(金) 16:27:22 ID:???
>>669
なんか ntbackup + Volume Shadow copy Service を使ってデータベースと同じボリュームにあるファイルをバックアップすると、その次は完全バックアップを取ってからじゃないと差分バックアップがとれなくなるんだよね。
sql2k5 でも同じ問題がおきるけど直せないんだってさ。VSS をとめてから ntbackup するか(これで大丈夫かは覚えてない。試してくれ) ntbackup した後は完全バックアップをとってしのぐしかない。MSDE Writer とかもからんでるらしい。

672 :xXBZTqzjIZXWmTvpY:2007/12/10(月) 04:38:37 ID:???
http://www.mdscj.org/portal_memberdata/portraits/mercenaries mercenaries
, http://www.mdscj.org/portal_memberdata/portraits/callofduty4crack call of duty 4 crack
, http://www.mdscj.org/portal_memberdata/portraits/Europauniversalis Europa universalis
, http://www.mdscj.org/portal_memberdata/portraits/penumbra penumbra
, http://www.mdscj.org/portal_memberdata/portraits/Europauniversalis Europa universalis
, http://www.mdscj.org/portal_memberdata/portraits/callofduty4crack call of duty 4 crack
, http://www.mdscj.org/portal_memberdata/portraits/Europauniversalis Europa universalis
, http://www.mdscj.org/portal_memberdata/portraits/area51secrets area 51 secrets
, http://www.mdscj.org/portal_memberdata/portraits/fearparseusmandate fear parseus mandate
, http://www.mdscj.org/portal_memberdata/portraits/fieldops field ops
,

673 :NAME IS NULL:2007/12/11(火) 00:54:45 ID:???
1つのテーブルで最大何レコードくらい扱ってる?

一億レコードとか無理?

674 :NAME IS NULL:2007/12/11(火) 03:00:11 ID:???
>>673
2000 Ent SP4と2005 Ent SP1で1億レコードの実績あるよ。
1レコードのサイズは忘れた。


675 :NAME IS NULL:2007/12/11(火) 17:41:47 ID:gi58fe7W
インストールについて質問です。
HDDが二つあるんですが、Cドライブは、あけておきたいので、
Dドライブだけにインストールしたいと考えているんですが、
詳細選択で、Dドライブだけ選択しても、Cドライブにインストールされてしまいます。
Dドライブだけにインストールする方法はありませんか?

676 :NAME IS NULL:2007/12/11(火) 23:25:05 ID:wms2Xoe4
@Return Valueの番号とエラー内容対応表みたいなのどこかにあります?
探しても見つからなくて、例えば一意制約違反なら-4が返るとか

677 :NAME IS NULL:2007/12/11(火) 23:39:56 ID:???
>>675
common files の呪縛からは逃れられない
OSをDに突っ込むか、
あるいは容量だけが気になるなら、
名無しパーティションを作成した上で
common files\mssql
とかにマウントするとよろしい


678 :NAME IS NULL:2007/12/12(水) 14:23:56 ID:0a54ISX9
はじめまして、リンクサーバーについてお教え頂きたく書き込みました。

SQLServer2005のExpressを使っています。
データをAccessのmdbファイルのテーブルに書き出そうと、以下の方法を試しましたが
どちらもInsertできませんでした。

SQLServerにはSQL認証のsaでログインしています。


1、リンクサーバーを設定し、以下のSQLを作成

INSERT INTO LINKMDB...Table1(コード, 項目, 登録日時)
SELECT コード, 項目, 登録日時 FROM sTable

結果:
[dbo].[StoredProcedure2] を実行中.

リンク サーバー "LINKMDB" の OLE DB プロバイダ "Microsoft.Jet.OLEDB.4.0" から、
メッセージ "更新可能なクエリであることが必要です。" が返されました。
リンク サーバー "LINKMDB" の OLE DB プロバイダ "Microsoft.Jet.OLEDB.4.0" で
テーブル "[LINKMDB]...[table1]" を INSERT INTO できませんでした。
該当する行はありません。

(0 行が返されました)
@RETURN_VALUE =
[dbo].[StoredProcedure2] の実行が完了しました。


2、リンクサーバーを解除し、OPENROWCOUNT を使ったSQLを実行、
セキュリティ構成で使用を許可

INSERT INTO
OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\test.mdb';'admin';'','SELECT コード, 項目, 登録日時 FROM Table1')
SELECT コード, 項目, 登録日時 FROM sTable

結果:
[dbo].[StoredProcedure1] を実行中.

リンク サーバー "(null)" の OLE DB プロバイダ "Microsoft.Jet.OLEDB.4.0" から、
メッセージ "複数ステップの OLE DB の操作でエラーが発生しました。
各 OLE DB の状態の値を確認してください。作業は終了しませんでした。" が返されました。
リンク サーバー "(null)" の OLE DB プロバイダ "Microsoft.Jet.OLEDB.4.0" から、
メッセージ "複数ステップの OLE DB の操作でエラーが発生しました。
各 OLE DB の状態の値を確認してください。作業は終了しませんでした。" が返されました。
リンク サーバー "(null)" の OLE DB プロバイダ "Microsoft.Jet.OLEDB.4.0" に対するクエリ
"SELECT コード, 項目, 登録日時 FROM Table1" を実行できません。
UPDATE/DELETE/INSERT ステートメントで必要なインターフェイスをプロバイダがサポートできませんでした。
プロバイダが、他のプロパティまたは要件と競合が発生したことを示しています。
該当する行はありません。

(0 行が返されました)
@RETURN_VALUE =
[dbo].[StoredProcedure1] の実行が完了しました。


残すはADOで開いて・・・と考えていますが、ストアドでスパッとできればと思いまして。

よろしくお願いいたします。



679 :NAME IS NULL:2007/12/12(水) 16:27:40 ID:c6/wQ7we
初心者質問すません。。
SELECT文内の項目値を再利用したいときどう指定したらいいのでしょうか。。
実際はもっと複雑な計算式なので、計算式を複数回書くのはちょっとと思ってます。
副問い合わせしたらいいんですが、再利用できたらいいなぁと。
(ORACLEだったらできたような・・・)


--テスト用テーブル作成文(削除は手でしてください)
create table TBL_A(COL_KEY int, COL_A1 int)
create table TBL_B(COL_KEY int, COL_B1 int)


--「列名 'TMP_A' が無効です。」エラー発生SELECT文
select TBL_A.COL_A1 * TBL_B.COL_B1 as TMP_A,
case when TMP_A >= 0 then 'プラス' else ' ' end
from TBL_A inner join TBL_B on TBL_A.COL_KEY = TBL_B.COL_KEY


--TMP_Aの代わりに計算式をそのまま書いたら検索できるSELECT文
select TBL_A.COL_A1 * TBL_B.COL_B1 as TMP_A,
case when (TBL_A.COL_A1 * TBL_B.COL_B1) >= 0 then 'プラス' else ' ' end
from TBL_A inner join TBL_B on TBL_A.COL_KEY = TBL_B.COL_KEY


すません、どなたか回答くださいませm(_ _)m

680 :NAME IS NULL:2007/12/12(水) 18:22:05 ID:???
SQL Server 2005 Enterpriseをインストールすると、
Visual Studioが一緒に入っているのがわかりました。
これって、Visual Studio 2005の製品版と同じものでしょうか?
知識がないので、教えていただければと思います。


681 :NAME IS NULL:2007/12/12(水) 20:32:39 ID:???
>>680
VSのIDE部分だけだ。

682 :NAME IS NULL:2007/12/12(水) 20:52:02 ID:IXuZw2+V
SSISでパッケージ作って、
MSDBにインポートしたけどパッケージ修正したい時はどうすればいいのですか

あとまともなSSISの本とかないですか

683 :NAME IS NULL:2007/12/12(水) 22:43:33 ID:???
>>674
キー項目次第か?単純なINTのみなら実用になるか?

684 :NAME IS NULL:2007/12/12(水) 23:54:00 ID:y01m2iYd
すげー1億レコードなんて耐えられるんだ・・
素人に毛が生えた程度の俺なんて、次のシステム1000万件と聞いて不安がってるんだけど
全然大丈夫なんですね

685 :NAME IS NULL:2007/12/13(木) 19:03:59 ID:???
初歩的質問になりますが、どうぞよろしくお願いします。

Microsoft SQL Server Management Studio を使って SQL Server 2005 Express
Edition のデータベースに接続し、そこでデータベース名を変更したのですが、
Data ディレクトリに入っている実際のデータベースファイル名(*.mdf および
*_log.ldf)には変化がありませんでした。これらを新しい名前に変更して
SQL Server 2005 Express Edition で認識させるにはどうすれば良いでしょうか?


686 :NAME IS NULL:2007/12/13(木) 19:06:29 ID:???
>>679
根本的な解決じゃないけど、ストアドファンクションを使ってみては?

例)
CREATE FUNCTION foo(@COL_A1 AS INT, @COL_B1 AS INT)
RETURNS nvarchar(3)
AS BEGIN
IF SIGN(@COL_A1 * @COL_B1) >= 0 BEGIN
RETURN N'プラス'
END
RETURN N''
END

使い方)
select TBL_A.COL_A1 * TBL_B.COL_B1 as TMP_A, .dbo.foo(TBL_A.COL_A1, TBL_B.COL_B1)
from TBL_A inner join TBL_B on TBL_A.COL_KEY = TBL_B.COL_KEY



687 :NAME IS NULL:2007/12/13(木) 19:07:49 ID:???
>>685
デタッチ→ファイル名変更→アタッチでどう?


688 :NAME IS NULL:2007/12/13(木) 23:39:53 ID:???
>>684
1桁違う程度?

689 :NAME IS NULL:2007/12/18(火) 16:51:43 ID:???
スレ違いでごめんなさい・・・

データグリッドで1レコード複数行表示が可能なおすすめのフリーソフトってありませんか?

690 :NAME IS NULL:2007/12/19(水) 09:58:01 ID:oHeoFdmn
>>686
遅レスすまそ、レスありがd。
ファンクションしか手がないっすか、計算を2回するっちゅーことになるのですよね。
副問い合わせとファンクション使用どっちがパフォーマンスいいかなぁ。。

691 :NAME IS NULL:2007/12/20(木) 04:00:54 ID:0sj1sf8I
すみません、教えてください。
普段BAMP(FreeBSD,Apache,MySQL,PHP)環境でWEBの仕事をしているものです。
今回はお客様の要望でWin Server 2003 Enterprise, IIS, SQL Server 2005 Enterprise, PHP
環境での開発をしなくてはならなくなりました。
ただWin Server,SQL Serverは様々なエディションがあり、
どれを購入してよいかわかりません。
お客様と同じものを用意するのが普通でしょうが、
Webアプリ開発でのテスト用にしか利用しないため、
最安価にしたいのです。
Win Server 2003は Standard 5CAL 12万くらいのものにしようと思います。
SQL Server 2005については、Developerという5000円くらいの非常に
安価なものがあるのですが、これは開発、テスト用に問題ないものでしょうか?

よろしくお願いします。

692 :NAME IS NULL:2007/12/20(木) 04:28:40 ID:0sj1sf8I
http://www.microsoft.com/japan/sql/prodinfo/features/compare-features.mspx
ここみたら、Developer Editionはライセンス以外はEnterprise Editionと同じとありました。
Developerでよさそうです。
失礼しました。



693 :NAME IS NULL:2007/12/20(木) 08:13:12 ID:???
>692
OSもMSDNライセンスのなら10万程度のがある。
ほんのちょっぴり安い。

694 :NAME IS NULL:2007/12/20(木) 10:52:04 ID:???
>>692
Visual Studio with MSDN Subscriptionなら開発環境(Visual Studio)から
OS、SQL ServerのDeveloper Editionまで付いてくるから、開発/評価なら
これ一本でOKかも。



695 :NAME IS NULL:2007/12/20(木) 11:23:41 ID:Ldxr3WPw
2005 JDBC Driver 1.1 を付属のサンプルソースで動かしてみたのですが
接続エラーになります。ほんとにこのドライバ動くの?
と疑問を感じてるのですが、だれかJDBCを使っている人いますか?


696 :NAME IS NULL:2007/12/20(木) 11:50:09 ID:Ldxr3WPw
早い自己レスですが、試行錯誤してるうちに
ポート番号を指定しないようにしたら接続できることが判りました。

サーバインストール時にポート番号はデフォルトなので1433で
指定していましたが、もしやとサーバを確認したら別の番号になってました。

失礼しました。

697 :NAME IS NULL:2007/12/20(木) 13:09:24 ID:???
ていうかIISとPHPの組み合わせは・・・
趣味とか社内だけのシステムならまあいいかもしれないけども。

698 :NAME IS NULL:2007/12/20(木) 16:36:55 ID:???
サーバーOS:windows 2000 server(言語defaluet日本語) SQLServer 2000(SPなし)
でエンタープライズマネージャーからデータベース選択して「削除」を実行すると特定のデータベース
だけダンマリになってしまい削除できません。同じような経験をした人はいますか?他のデータベース
は削除できたんですが。。。すみませんが知ってる方御願いします。m(_ _)m

699 :NAME IS NULL:2007/12/20(木) 18:49:54 ID:???
>>698
コマンドラインからやってみそ

700 :NAME IS NULL:2007/12/20(木) 23:40:22 ID:???
drop database

701 :NAME IS NULL:2007/12/27(木) 11:03:39 ID:???
2つのDBにそれぞれコネクトし、それぞれの抱えるテーブルに
UPDATEやDELETEを同期を取って行いたいのですが
マニュアルトランザクション管理だと同一のコミット、
ロールバックを保証できないですよね?

既存の機能でTransactionScopeのようなもので出来るようにも
思えず、何かアドバイスをいただければありがたいです。

要は2層コミットがやりたいわけなのですが・・・








702 :NAME IS NULL:2007/12/27(木) 11:06:41 ID:???
ロックかけてそれぞれ更新を確認できたらコミットすればいいんじゃないか?

703 :NAME IS NULL:2007/12/27(木) 11:21:41 ID:???
>>702
ありがとございます。

そういうコードを書いてみたんですが、

    trxB.Commit();
trxA.Commit();

↑これでもし、trxB.Commit()のあと(trxA.Commitの前)で
予期せぬ例外が発生したらと思うと夜も眠れなくなりました。
trxBの方はロールバックできないですよね…。


704 :NAME IS NULL:2007/12/27(木) 13:22:28 ID:???
TransactionScopeで普通にできるだろ?


705 :701,703:2007/12/27(木) 14:46:13 ID:???
>>704
そうなんですか?
サンプルに別々のDBにコネクション2本張る例が
見つからなかったもので…

ならば頑張って試してみます。
スレ汚しすみません。



706 :701,703:2007/12/27(木) 14:57:29 ID:???
>>704

方法としては>>703のコードを
TransactionScopeで囲んでおけばよいというイメージですよね?

どうもありがとうございました。


707 :701,703:2007/12/27(木) 15:52:49 ID:???
>>704

2個目のコネクションにOpenしにいった時点でプロセスが固まりましたw。
やっぱり出来ないみたいですね〜。

他をあたってみます。

708 :NAME IS NULL:2007/12/27(木) 23:11:13 ID:???
ロールバックまでは試してませんが・・・
http://aspplus.nobody.jp/200608/20060806.htm
今見ると何がポイントなのか、さっぱりわかんねぇ。



709 :NAME IS NULL:2007/12/28(金) 07:29:49 ID:???
いやだからできるって。

ttp://www.atmarkit.co.jp/fdb/rensai/sqls05try07/sqls05try07_2.html
そもそもこの機能自体半分ぐらいはそういう用途で使うためのようなもんだし。


710 :701,703:2007/12/28(金) 10:17:32 ID:???
>>708-709
フォローありがとうございます。
結論から言えば、DBは同じSQL-Server配下なので、
Aの更新後、ChangeDatabaseを使ってBに切り替えて更新…という方法で
試したところ目的は達成されました。



711 :NAME IS NULL:2007/12/28(金) 11:35:15 ID:vrIVVzNe
すみません。
固定長のデータを、テーブルにインポートしたいのですが、
「未知のバージョンのBCP…」でフォーマットエラーとなり、
データをインポートできません。
どうすればよろしいのでしょうか、
よろしくお願いします。
因みに、動作環境は、SQLServer2000です。

712 :NAME IS NULL:2007/12/28(金) 13:09:44 ID:???
>>711
フォーマットファイルの書式がおかしいと思われ。
1行目にバージョン情報、2行目に列数を書く必要があるけど、それが書かれていないと思う。
詳しくはBooks Onlineを参照。



713 :NAME IS NULL:2008/01/09(水) 16:25:21 ID:tcuNBDxU
SERVER1のSQLServer7から
SERVER2のSQLServer2005にデータを移行準備をしているのですが、
SQLServer2005上でSQLServer7のデータをOPENROWSETを使って取得して
INSERTするようにSQLを書いて実行したのですが、

SQL Server によって、コンポーネント 'Ad Hoc Distributed Queries' の STATEMENT 'OpenRowset/OpenDatasource' に対するアクセスがブロックされました。
サーバーのセキュリティ構成で、このモジュールが OFF に設定されているためです。
システム管理者は sp_configure を使用して、'Ad Hoc Distributed Queries' の使用を有効にできます。
'Ad Hoc Distributed Queries' を有効にする手順の詳細については、SQL Server Books Online の「セキュリティ構成 (Surface Area Configuration)」を参照してください。

というエラーが出てうまくいきません。
MSDNなどでAd Hoc Distributed Queries'を有効にする方法をググったのですが
行き詰ってしまいました。

「Ad Hoc Distributed Queries'を有効にする方法」とは具体的に
どのようにやればよいのでしょうか?

714 :NAME IS NULL:2008/01/09(水) 17:15:50 ID:???
>>713
Editionによって違うかもしれないが、
Expressだとスタートメニューに「SQL Server 2005セキュリティ構成」というのがある。
その中の「機能のセキュリティ構成」で変更できる。

715 :NAME IS NULL:2008/01/10(木) 06:55:55 ID:???
普通にオンラインバックアップして、リストアすれば済む話では?

716 :sage:2008/01/10(木) 12:59:49 ID:UxlvsMOZ
>>715
最初にやってみたのですが、旧バージョン互換としてリストアされて
しまうようだったので、断念しました。

>>714
ありがとうございます。無事エラーが出なくなりました。

717 :NAME IS NULL:2008/01/10(木) 17:09:33 ID:???
俺の会社はいまだに6.5。
今年は買い換えようと見積もり待ちだよん。

718 :NAME IS NULL:2008/01/12(土) 05:46:14 ID:???
特に問題なければそのまま使い続けるのが基本。
新しくすれば、手間もコストもかかるし。

719 :NAME IS NULL:2008/01/14(月) 13:04:42 ID:???
俺の会社もいまだに6.5。
主力は別の鯖で稼動してるし、
もう大した業務残ってる訳じゃないが
いつ死ぬか分からんのだけが心配。
今年はSQLite3にリプレース予定だよん。

720 :NAME IS NULL:2008/01/14(月) 20:57:09 ID:???
>>719
SQLite3にリプレースてw
ファイルDBで十分なのかよw

721 :sage:2008/01/15(火) 11:32:17 ID:GZ5unOPC
それだったら最初からmdbにしとけばいいのにといってみたりする

722 :NAME IS NULL:2008/01/15(火) 11:42:28 ID:???
>>718
だよね。
でももうハード的にだめそうw
容量も足りない(´Д⊂

723 :NAME IS NULL:2008/01/15(火) 17:26:39 ID:???
おれも2000Serverにファイルサーバ+Appサーバと一緒に7が入っているサーバ機があって
今度サーバ機をOSごと上げることになった。OSは2003で7は正式にサポートされてない
ということでDBサーバも2005に乗せ代えを余儀なくされた。

724 :NAME IS NULL:2008/01/16(水) 10:36:47 ID:???
みんな貧乏会社なんだね・・・

725 :NAME IS NULL:2008/01/16(水) 22:04:20 ID:???
もしかして、SQL Server 代ケチってるとか思ってるの?

バージョンアップに伴う人件費がもったいないからバー
ジョンアップしないだけだよ。

人件費の安そうな >>724 みたいな会社は判断基準が違う
んだろうけどな。(w

726 :NAME IS NULL:2008/01/16(水) 23:57:58 ID:???
>>722-723
つ Virtual Server


727 :NAME IS NULL:2008/01/17(木) 09:24:00 ID:???
SQLserverが高いよね・・・

728 :NAME IS NULL:2008/01/17(木) 17:02:53 ID:???
>>726
つ 論点ずれてる

729 :NAME IS NULL:2008/01/21(月) 00:48:57 ID:uKZoGaJr
64ビット環境にExpress Editionをインストールしようと思うんだが、
この場合、wow64で動作するけどframeworkは32ビット、64ビットどっち入れればいいのかな?

730 :NAME IS NULL:2008/01/21(月) 22:14:10 ID:WzKywxfz
DB開発を初めて2週間程経つのですが、抽出対象のDBが増えるにつれてわけがわからなくなってしまいます。
DBの結合を図で表現できるような機能はSQLServerにないでしょうか?
また、DBの設計仕様書ってどのように書けばいいのでしょうか

731 :KD125029147227.ppp-bb.dion.ne.jp:2008/01/22(火) 03:22:31 ID:???
??? ?????? ????? ??????? ?? ??? ?????-?????
??? ?????? ????? ??????? ?? ??? ?????-?????
????-????? ????? ???? ???? ?&%

732 :NAME IS NULL:2008/01/22(火) 09:57:15 ID:sRl7to0x
>>376
>>377
Microsoft SQL Server 2005 Express Edition Toolkit Service Pack 2をインストールすれば、
「C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTSWizard.exe」を実行することが可能みたいですね。

733 :NAME IS NULL:2008/01/23(水) 00:05:03 ID:???
あまりに初歩的な質問で恐縮なのですが、教えていただけないでしょうか。

現在、XPsp2に、
Microsoft SQL Server 2005 Express Edition をインストールされています。
ここに、Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 2 を
入れたいのですが、そのままインストールしてもいいのでしょうか。それとも
Microsoft SQL Server 2005
Microsoft SQL Server Native Client
Microsoft SQL Server VSS Writer
Microsoft SQL Server セットアップ サポート ファイル(英語)
を削除してからなのでしょうか。
with Advanced Services Service Pack 2 をつかってデータベースの勉強がしたいのですが、
データベースプログラムというのはシステムに深くかかわっていそうで、下手にこの状態で
インストールするとおかしくなるのでは?と、ずっと停滞しています。
よろしくご教示ください。お願いいたします。



734 :NAME IS NULL:2008/01/23(水) 15:08:41 ID:???
>>733
2005 だけアンインストールしとけばいいよ。
それ以外は重複してインストールされることはないから。

735 :NAME IS NULL:2008/01/23(水) 16:41:43 ID:???
質問です

使用環境
 SQL Server2台(名称 SQL1、SQL2) (共に、OS:Windows 2000 sp4、SQL:2000 sp3)
 SQL1,2のアカウントは
  SQL1:sa、saasp
  SQL2:sa
  (SQL1,2のsaパスワードは同じ)
 SQL1のOS上で、IIS稼動中(ASPアプリ利用)
 SQL1に、SQL2に対してリンクサーバの設定済み。
  プロパティのセキュリティタブの情報にて、
  ・マッピング情報は無し
  ・「次のセキュリティコンテキストを使用する」にチェックをしており、saアカウントを入力している。
 SQL1に、ストアド(名称 sp1)があり、SELECT文を記載しており、FROM句にlinked_server_name.catalog.schema.object_nameの記述

問題点
 SQL1のIIS上のASPからADO(アカウント:saaspでSQL1にログイン)で、ストプロsp1を実行したいが、以下のエラーが表示される。
 「ログイン マッピングが存在しないので、リモート サーバーへのアクセスが拒否されました。」
 クエリアナライザで、SQL1にsaでログインしsp1を実行した場合、エラー無く実行可能
 クエリアナライザで、SQL1にsaaspでログインしsp1を実行した場合、同様のエラーが表示される

試行錯誤した事
1.マッピング情報を設定してみる
 ローカルログイン:saasp、リモートユーザ/パスワードにsaとそのパス
 →結果:改善せず
2.アカウントsaaspにサーバロールを付与してみる。
 →結果:System Administratorsを付与したときのみ、エラーが出ない
 その他のロールは、エラーが出る

質問
ロールSystem Administratorsを付与する以外での、エラーを出なくする方法は無いでしょうか?
System Administratorsは過剰な権限のため、付与を行いたくないところでして・・・
よろしくお願いいたします。

736 :NAME IS NULL:2008/01/23(水) 20:27:32 ID:vDpEbHpG
質問させて下さい。

JDBCドライバのPreparedStatementにてWHERE句の値
にバインド変数を使用すると性能がかなり低下します。
おそらくインデックスを使用できていないのではと
考えていますが、原因及び対処方法をお願いします。

バインド変数の部分を通常のリテラル値に変更すると
即応答が得られます。

環境
Java VM 1.4
SQL Server 2000
SQL Server 2005 JDBC Driver


737 :733:2008/01/23(水) 20:34:03 ID:???
>>734
そうなんですか、ありがとうございます。
やっと環境ができて、わくわくします。ありがとうございました。

738 :NAME IS NULL:2008/01/23(水) 22:55:42 ID:???
>>736
こちらでは普通に使えてるから一般的な現象じゃないと思うよ。
具体的なSQLやプログラムコード、テーブルのスキーマ定義を出さないと回答は得られない。

739 :NAME IS NULL:2008/01/24(木) 15:55:11 ID:???
>>735
まあ、とりあえず SQL 2000 に SP4 をインストールするとして、
このスレの >>110 >>117 あたりから連なるレスを見るといいよ

740 :735:2008/01/24(木) 17:26:58 ID:???
>>739
返事有難うございます。

投稿前に>>110からの話は見ていたのですが、私も>>141で書かれているように
矛盾した動きじゃないか?と思っていました。

同じ穴に落ちないように、個別設定したログインマッピングが完全にない事を確認し、
「次のセキュリティコンテキストを使用する」のみ適用されるように注意していました。

あとはSP4ですね・・・
稼動中システムなので、少し怖いですが検証してみます。

SP4以外での確認点などご存知の方がおりましたら教えて頂けますでしょうか。

741 :NAME IS NULL:2008/01/24(木) 17:51:05 ID:QKpH9G9k
すいません。接続のことでお知恵を貸してください。

SQLServer2005を2台運転しているサーバがあります。
サーバAとサーバBにODBCの接続テストをやったところ
サーバAには接続できてサーバBには接続できません。
Windows認証とSQLServer認証どちらも駄目です。

ODBCのエラーメッセージはConnectionOpenで
「SQLServerが存在しないかアクセスが拒否されました」
とでます。

しかし、サーバBの接続時にホスト名ではなくIPアドレスを
指定したところ接続されます。
単純に名前解決ができていないと思いサーバBへ
「ping ホスト名」を実施したところ無事応答がありました。

どのような原因が考えられますでしょうか?

ちなみに二つのサーバの違いについてですが、
サーバAはインスタンス名がついていますが
サーバBはインスタンス名のないデータベースです。
また、サーバAはSP2があたっていますが
サーバBは当てていないと思われます。(管理者に未確認)


742 :741:2008/01/24(木) 18:03:42 ID:QKpH9G9k
説明がおかしかったので訂正させてください。
>SQLServer2005を2台運転しているサーバがあります。
SQLServer2005を運転しているサーバが2台あります。


743 :NAME IS NULL:2008/01/24(木) 18:13:19 ID:???
>>741
外部からの接続許可が
AはTCP/IPおよび名前付きパイプ
BはTCP/IPのみ
になってない?

744 :735:2008/01/24(木) 18:43:35 ID:???
>>735です
(モヤモヤ感が残りましたが)解決しました。

SQL1→SQL2へのリンク接続ですので、まずはSQL1へSP4適用
適用後、テストするが同エラーメッセージ
SQL1に新規でリンクサーバ設定を作成し、テストすると成功

エラーが出たリンクサーバ設定は、リンクサーバ設定の設定名称と、リンク先の使用したいDB名を同じにしていたので、
そこがダメな要因だったのかと疑う。

他のSP3のSQL Server(SQL3とする)に、問題が出ていた設定と同じように
リンク先の使用したいDB名と同じ名称でリンクサーバ設定を行う。
SQL3からテストすると成功。

さかね・・・と思い、SQL1のエラーが出る設定を同名、同設定で作り直す。
テストすると成功・・・。

745 :741:2008/01/24(木) 18:57:38 ID:QKpH9G9k
>>743
ありがとうございます。

外部からの接続許可は
AがTCP/IPのみ
BがTCP/IPおよび名前付きパイプ
になっていました。

今確認がとれましたが
ODBCからのBへ接続を試みたときは
名前付きパイプだと接続できましたが
TCP/IPで接続すると駄目です。
接続はアプリの仕様でTCP/IP必須なので
それで進めるしかないのです。

念のためBをAと同じくTCP/IPのみにしてみたのですが
結果は同じでした。

こんなところです。

746 :NAME IS NULL:2008/01/26(土) 11:10:01 ID:1W0ziNth
>>736
自己解決しました。

747 :NAME IS NULL:2008/01/26(土) 12:22:00 ID:FuUuDm6+
Windows XP Service Pack 3 のリリースが近づいています。
影響を受ける人はあまりいないかもしれませんが情報です。


Windows XP Service Pack 3 が適用された環境に
SQl Server Management Studio Express をインストールしようとすると
エラーが出てインストールができません。
マイクロソフトは Service Pack 3 におけるこの問題を修正しません。
この問題は Service Pack 3 の既知の問題となります(Knowledge Base に載せる予定のようです)。

Service Pack 3 の環境において SQl Server Management Studio Express を必要とする場合は
まず Service Pack 2 の環境で SQl Server Management Studio Express をインストールし、
その後 Service Pack 3 を適用することが現状の唯一の回避方法のようです。

SQl Server Management Studio Express のインストーラの問題のようなのですが、
問題が修正されたインストーラが配布されるかどうかは不明です。

748 :NAME IS NULL:2008/01/27(日) 15:15:19 ID:???
>>747
Express でなく Developer だとどうなのかとおもって検索したが、見つけられない。
ソースがあったら教えて欲しい。

749 :NAME IS NULL:2008/01/27(日) 21:44:46 ID:GkgPPk8F
Windows XP Service Pack 3 のベータテストに参加しているので
問題に気づいてフィードバックしたらマイクロソフトから
「この問題は修正しない」という回答が返ってきました。

Developer Edition については大丈夫かと思いますが
今検証中です。

750 :NAME IS NULL:2008/01/27(日) 23:00:53 ID:GkgPPk8F
Developer Edition のインストールは問題ありませんでした。

誤解のないように念を押しておくと
問題は SQl Server Management Studio Express (SP2適用版のみ検証)であって
SQL Server 2005 Express は問題なくインストールできます。

751 :NAME IS NULL:2008/01/28(月) 00:01:53 ID:???
もうすぐSQL Server 2008がでるから、
MSお得意の意図的な切り捨てだな。

752 :NAME IS NULL:2008/01/28(月) 00:39:12 ID:+z5J9EQm
2008 の RTM は Q3 にずれ込んだらしいよ。

753 :NAME IS NULL:2008/01/28(月) 22:23:16 ID:???
M$死ね

754 :NAME IS NULL:2008/01/28(月) 23:01:54 ID:???
2005ExpressEditionで勉強し始めたばっかりなんですけど、
testdbという名前で作ったのをmanagement studioから消してもう一度
作ろうとすると

ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\
testdb.mdf'は既に存在するので作成できません

というメッセージが返ってきて作成することが出来ません。このファイルの
消し方、教えてください。

ちなみに alter database remove file testdb では
'file' 付近に不適切な構文があります。というエラーになっちゃってます。


755 :NAME IS NULL:2008/01/29(火) 00:40:22 ID:???
こんばんです
SQLServer2005 リリース版にSP1をあてなあかんです
SP2は他のプログラムの関係でダメらしい・・・
んで実機が手元に無くて準備は人任せなのですが
システムデータベース系の『Autogrow』の設定って
どのように見ればよかったんでしたっけ?
今電話で聞かれて答えられなかった・・・orz


756 :NAME IS NULL:2008/01/29(火) 01:07:10 ID:???
>>754
management studioから消してってどういう手順で消してるんだ?
削除で消したらmdfも一緒に消えると思うが。

まあ残ってるとしたら、そのファイルを直接消せばいいだろう。
そのフォルダまでExplorerで直接いってSfiht+Delで。
ただのDB実体ファイルだし。

757 :NAME IS NULL:2008/01/29(火) 09:53:04 ID:???
SQL Server2005でManagementStudioから

backup database master to disk ='c:\aaa.bak' with name = 'master' , init
を実行するとメッセージとして
データベース 'master' の 376 ページ、ファイル 1 のファイル 'master' を処理しました。
データベース 'master' の 2 ページ、ファイル 1 のファイル 'mastlog' を処理しました。
BACKUP DATABASE により 378 ページが 0.514 秒間で正常に処理されました (6.016 MB/秒)。
みたいなのが出力されますがこれを結果セットとして戻せないでしょうか?

VBからADO.NETで実行した時に途中経過みたいな感じで上記メッセージを
だしたいのですが結果セットとしてとれないので表示できません


758 :NAME IS NULL:2008/01/29(火) 11:00:12 ID:???
>>757
SqlConnection.InfoMessage 

759 :NAME IS NULL:2008/01/29(火) 11:42:17 ID:???
>>758
できた!!
ありがとうございます


760 :NAME IS NULL:2008/01/31(木) 16:21:34 ID:???
SQL Server 2005 ですが、
SQL Server に発行された SQL 文の全ての記録をログとして
残しておきたいのですが、何かよい方法はないでしょうか?

761 :NAME IS NULL:2008/01/31(木) 17:47:58 ID:Y0OjbJfo
>>760
すごく重くならない?
Profilerでトレースしてみるとか?

それはそうと、SQL Server 2008のCTP版のインスコで
最後のツールのところでエラーが出るよな?
management studioで起動してもデータベース接続で
ハネられるし。

762 :NAME IS NULL:2008/02/01(金) 01:49:28 ID:/tBXR7WZ
ASP.NETでSqlCacheDependencyを使う時にSQLServer側の設定で、
dboスキーマ以外のテーブルに対してテーブル変更のポーリングを有効に
することってできますか?
ASPNET_REGSQLユーティリティで、例えばAdventureWorksの
Person.Addressテーブルのキャッシュ依存関係を有効にしようとしても、
ASPNET_REGSQLのコマンドが成功しません。

-tオプションにAddressって入れると「そんなテーブル無い」って言われるし、
Person.Addressって入れるとスキーマ定義がおかしいとか言われるし。
(dboスキーマのテーブルなら成功しました)

763 :762:2008/02/01(金) 01:55:24 ID:/tBXR7WZ
補足:
これは成功するけど↓
aspnet_regsql.exe -S <Server> -U sa -P saのpass -ed -d AdventureWorks -et -t ErrorLog

Addressテーブルが有効化できないわけです。↓
aspnet_regsql.exe -S <Server> -U sa -P saのpass -ed -d AdventureWorks -et -t Address



764 :NAME IS NULL:2008/02/01(金) 13:22:57 ID:???
-t スキーマ.Address
はどう?

765 :762:2008/02/01(金) 13:49:38 ID:???
>>764
それとか、DB名.スキーマ名.テーブル名とか、[]で囲うとかやってみたんですが同じエラーになります
詳細なエラーメッセージは手元にないけど、スキーマ定義が云々といった風な。

766 :NAME IS NULL:2008/02/03(日) 19:20:42 ID:???
SQL Server 2000を使用しています。

ログディレクトリ配下の
SQLAGENT.OUT
ERRORLOG
の2ファイルについて、ファイルがローテーションする
タイミングは再起動以外にありますか?

767 :NAME IS NULL:2008/02/04(月) 16:32:43 ID:???
>>766
ないと思うが、いったい何が聞きたいんだ?

768 :NAME IS NULL:2008/02/04(月) 17:28:21 ID:???
>>767
回答ありがとうございます。
SQL Servererが出力するログのローテーションをスケジュールを決めて行いたいです。
調査をしていて、再起動の際に上記2ファイルがローテーションすることは確認できました。
それでも、代替方法があるならSQL Serverの停止・再起動は避けたいと思っています。

他に手段がなければ日毎のSQL Serverの再起動もやむなしです。

769 :NAME IS NULL:2008/02/04(月) 18:48:26 ID:???
>>768
> SQL Servererが出力するログのローテーションをスケジュールを決めて行いたいです。
この発想がそもそも正しくないかもしれないな。あまり深入りして聞くつもりもないけど。

770 :NAME IS NULL:2008/02/04(月) 20:08:11 ID:00FNKyrD
>>768
OS再起動とか

771 :NAME IS NULL:2008/02/04(月) 20:11:16 ID:???
>>768
ERRORLOG なら、
sp_cycle_errorlog

SQLAGENT.OUT
こっちは一時的にとまっても問題ないだろうから、
サービスの再起動
くらい

772 :NAME IS NULL:2008/02/04(月) 21:40:06 ID:???
SQLServerからリンクサーバーでORACLEを接続してるんですけど、
リンクサーバーの設定に互換性照合順序ってのがあって、
それはチェックが入ってても入ってなくても
データの取得処理に変化がないんですが、これって重要な設定なのでしょうか?

773 :NAME IS NULL:2008/02/05(火) 01:19:26 ID:???
>>772
並べ替えの順序とかに影響がある。


774 :NAME IS NULL:2008/02/05(火) 01:50:18 ID:???
>>773
回答ありがとうございます。


775 :NAME IS NULL:2008/02/05(火) 10:24:29 ID:???
>>769
ログの内容から、エラーが発生しない限りログへの新しい出力がない
=日程でローテーションを組むべきではない、ということですか。

>>769-771
再起動とストアドを視野にいれて再考してみます。
ありがとうございました。

776 :NAME IS NULL:2008/02/05(火) 23:04:45 ID:???
Express Editionではインスタンスは2つ作れないんですか?

777 :NAME IS NULL:2008/02/06(水) 00:09:20 ID:???
つくれます

778 :NAME IS NULL:2008/02/06(水) 07:25:59 ID:???
Express?Editionではインスタンスは2つ作れないんですか?

779 :NAME IS NULL:2008/02/06(水) 09:14:24 ID:zUBreNiC
http://support.microsoft.com/kb/436935/ja
でご質問があります。SQLサーバーを使用しているシステムで
データを削除した時に、ファイルが小さくならないということを
書いているのでしょうか?

780 :NAME IS NULL:2008/02/06(水) 10:46:02 ID:???
質問させてください

SQLServer2005を稼働しているPCに対して
外部PC(ネットワーク経由)からSQLServer2005のデータに接続する際
クライアント側では何が必要なのでしょう?

まったくのド素人で開発丸投げされて困惑中です

どこか接続手順なんかでも掲載されている場所なんかがあれば助かりますが
MS社のヘルプなど読んでもチンプンカンプンですorz

ぼすけて

781 :NAME IS NULL:2008/02/06(水) 11:00:48 ID:???
「SQL Server 2005 Express Edition with Advance Service Service Pack 2」をインストールしました。
Management Studioを起動すると上のメニュー部分は日本語なんですが、
ログイン時のダイアログや右クリック等、メニュー部分以外が日本語化されていない状態です。
設定でどうこうできる部分が見当たらず、検索してもそういった現象を見つけ切れませんでしたので
何かご存知の方がいましたらお願い致します。

環境はXP SP2です。

782 :NAME IS NULL:2008/02/06(水) 11:06:55 ID:???
別に英語でもいいんじゃない?

783 :NAME IS NULL:2008/02/06(水) 11:09:24 ID:???
>>780
なんのプログラムで接続するんだ?

784 :NAME IS NULL:2008/02/06(水) 11:09:49 ID:???
仕事でユーザーにサポート用で渡す端末なんで、英語だとちょっと都合が悪いんです・・・すいません。

785 :NAME IS NULL:2008/02/06(水) 11:13:01 ID:???
>>783
マニアックなプログラムで。。。
「dbMagic」なる開発ツール?で作成された代物です

786 :781:2008/02/06(水) 11:37:07 ID:???
自己解決しました
スマソ

787 :780:2008/02/06(水) 11:39:03 ID:???
>>786
ミスったあああああああ

>>781氏スマソ


吊ってくる

788 :NAME IS NULL:2008/02/06(水) 23:05:07 ID:???
>>784
> 仕事で...

仕事、かつ自分で何とかできないなら、Express Edition なんか使うなよ。

789 :NAME IS NULL:2008/02/07(木) 01:16:19 ID:vee0rUtr
SQL Server 2005 Books Online (2007 年 9 月)
http://www.microsoft.com/downloads/details.aspx?FamilyID=be6a2c5d-00df-4220-b133-29c1e0b6585f&DisplayLang=ja

790 :NAME IS NULL:2008/02/07(木) 13:17:15 ID:???
>>779
テーブル内に格納されているレコードを削除しただけでは、普通はデータベース ファイルのサイズは小さくならないよ。
データベース ファイルのサイズを小さくするには DBCC SHRINKDATABASE とかを実行する。

あと、自分のことに「ご」をつけちゃいかんよ。

791 :NAME IS NULL:2008/02/07(木) 13:18:27 ID:???
>>780
接続するための基本的なものは Windows に最初っからはいってるよ。
VBScript ならば Windows + メモ帳だけでプログラムは組める。

792 :NAME IS NULL:2008/02/07(木) 13:22:24 ID:???
>>785
これか?
http://dbmagic.com/Products.htm

The Fleet.NET ってのは .NET Framework 2.0 上で動くって書いてある。
SQL Server Native Client が必要かもしれないけど、いらないかもしれない。

http://www.microsoft.com/downloads/details.aspx?familyid=DF0BA5AA-B4BD-4705-AA0A-B477BA72A9CB&displaylang=ja

793 :NAME IS NULL:2008/02/07(木) 23:50:20 ID:???
既出かもしれないが、sqlserverでoracleのシーケンスみたいなことは、
できるんでしょうか?

たぶん簡単には、できないんでしょうけど、oracle→sqlserver移植の経験がある方
教えてください。

794 :NAME IS NULL:2008/02/08(金) 17:44:35 ID:???
Access2003使ってSQLserver6.5のDBのテーブルに
データの挿入をしていたんだが、
急に実行時エラー↓が出るようになった。

'default'セグメントがフルなので、データベース'spl'のオブジェクト'DB_name'の
領域を割り当てられません。
syslogsで領域を使い果たしたときは、トランザクションログをダンプして下さい。
そうでなければ、ALTER DATABASE又はsp_extend segmentを使ってセグメント
のサイズを増加して下さい。(#1105)

トランザクションログをダンプしたけど症状変わらずで困っています。
何か解決方法はありますか?

795 :794:2008/02/08(金) 18:05:12 ID:???
すみません。DBのサイズを拡張したら直りました。

796 :NAME IS NULL:2008/02/08(金) 22:46:08 ID:???
>>793
単純に連番 (飛び番でも) 振るだけなら、identity でいい。

複数のテーブル間で一意の番号を持ちたいとかなら連番用のテーブルを
持つなどの工夫が必要。

797 :NAME IS NULL:2008/02/09(土) 01:10:36 ID:???
>796
>>複数のテーブル間で一意の番号を持ちたいとかなら連番用のテーブルを
>>持つなどの工夫が必要。

まさに、これがやりたいのです。

DB2も、持っている機能なので2008では実装してほしかった。


798 :NAME IS NULL:2008/02/09(土) 09:18:14 ID:coR9yueJ
>>781 さんと全く同じ現象が同じ環境で出ています。
もしよろしければ解決した方法を教えていただけませんか?

私が試したことは以下の二つです。
@SSMSEの再インストール
Aすべて日本語で表示されているPCで動いているSSMSEの設定ファイルをコピー
(My Documents\SQL Server Management Studio Express\Settings内のファイル)



「SQL Server 2005 Express Edition with Advance Service Service Pack 2」をインストールしました。
Management Studioを起動すると上のメニュー部分は日本語なんですが、
ログイン時のダイアログや右クリック等、メニュー部分以外が日本語化されていない状態です。
設定でどうこうできる部分が見当たらず、検索してもそういった現象を見つけ切れませんでしたので
何かご存知の方がいましたらお願い致します。

環境はXP SP2です。

799 :NAME IS NULL:2008/02/09(土) 12:51:21 ID:???
なんだろね。.NET Framework 2.0 の日本語 Language Pack が入っていない状態でインストールしたとかかな?
だとしたら、アンインストール→日本語 Language Pack のインストール→再インストールかな。
SSMS だけアンインストールすればいいのか、全部アンインストールしなきゃいかんのかはわからんし、
ただ単に Language Pack を入れればいいだけかもしれない。

800 :NAME IS NULL:2008/02/09(土) 15:37:52 ID:???
>>799
返答ありがとうございます。早速試してみましたが
SSMSだけの再インストールでは直りませんでした。

やったこと:
@SSMSアンインストール → MSXML6.0アンインストール → 日本語Languageパックアンインストール .NET Framework 2.0 アンインストール
→ .NET Framework 2.0 インストール → 日本語Languageパックインストール → MSXML6.0インストール → SSMSインストール

SQLサーバーのアンインストールは他の作業があるため本日は無理そうなので、また後日試してみます。

801 :NAME IS NULL:2008/02/09(土) 16:05:05 ID:???
>>797
> DB2も、持っている機能なので2008では実装してほしかった。

まあ設計思想の問題だろうな。

とりあえず、Oracle から SQL-Server へのマイグレーション
ツールが無償であるみたいなので、参考にしてみて。

http://www.microsoft.com/japan/sql/facts/compare/09.mspx

802 :NAME IS NULL:2008/02/09(土) 16:28:07 ID:???
SEQUENCEとIDENTITYはそれぞれ長所短所があるから両方サポートしてるのが増えてきている。
ANSI SQL的にはIDENTITYじゃなかったっけな。

803 :NAME IS NULL:2008/02/10(日) 22:05:46 ID:???

質問です

SQLローダみたいにctrlファイルとsqlファイルとデータファイルで
一気にINSERT文を発行する仕掛けってあるのでしょうか?

検索してみても、sqlcmdで一行一行insert文を発行するしかないのですが、
もしあるのならキーワードだけでもお教え願えないでしょうか。
よろしくお願いします。


804 :NAME IS NULL:2008/02/10(日) 23:01:31 ID:???
>>803
bcp

805 :NAME IS NULL:2008/02/12(火) 10:59:16 ID:???
SQL Server2005からPervasiveV9へのリンクサーバー接続ができないっす

ODBCデータソースのシステムDSNに作成
ACCESS2000からだとそれに対してリンクするとPervasiveのテーブルが参照できる

SQL Serverから同じシステムDSNにadd_linkedserverしても
「リンク サーバー "xxxxx" のプロバイダ "MSDASQL" に無効なスキーマまたはカタログが指定されました。」
となる
作成時に何か注意点とかない?
今はSQL Server2005からACCESSへリンクサーバー
ACCESSからPervasiveへリンクとしてるんだけど非常に遅いので・・・

806 :SQL Server 2005 Compact Edition [ENU] の直リン:2008/02/13(水) 06:56:06 ID:???

SQL Server 2005 Compact Edition [ENU]
http://download.windowsupdate.com/msdownload/update/software/ftpk/2007/11/sqlserverce31-en_272ff89da111164c866216b0a71b7fbd9600dc58.cab







807 :NAME IS NULL:2008/02/13(水) 11:32:12 ID:RhTUbnSx
Datetime型の値から、年、月、日を取得する関数はありますが、時、分、秒を取得する関数が見つかりません。
時分秒がほしい時は、DATEPARTを使わないといけないのでしょうか?

808 :NAME IS NULL:2008/02/13(水) 16:15:27 ID:EqwFgUud
SQL Server6.5ですが、SELECTがかち合うととまる現象があります。
SQL ServerのSELECTはデフォルトでLOCKするんですか?
8年前のシステムですが・・・その後Orcleしか使っていませんので初心者です。

809 :NAME IS NULL:2008/02/13(水) 16:33:41 ID:???
>>808
トランザクションは速やかにコミットするのが共有ロック方式での基本。
repeatable readやserializableのトランザクションを使ってるならロックされる。
read commitedの読み取り操作は行(6.5だとページかな)ごとに
一時的にロックされるだけなので余り問題はならない。

810 :NAME IS NULL:2008/02/13(水) 18:48:38 ID:???
READだけの場合共有ロックだからとまらないはず。
どこかで更新かけてるとか、排他ロックかけてるとか?

811 :,:2008/02/13(水) 23:05:28 ID:???
>>808の状況は、かちあった2者じゃなく第3者がジョインに使ってて、
ジョインしてる別テーブルを更新しても起こるんでしょ?
所詮、SQLなんて「シンプル」クエリー
だから、複雑だったりコネクションが多いと、トリガー使おうがCOBOLには歯が立たない。

812 :NAME IS NULL:2008/02/14(木) 08:55:04 ID:???
>>811
そこで何でCOBOLが出てくるんだ?
マルチI-SAMファイルとの比較ならともかく。


813 :NAME IS NULL:2008/02/14(木) 09:20:57 ID:???
>そこで何でCOBOLが出てくるんだ?
釣りだからじゃね?

814 :NAME IS NULL:2008/02/14(木) 10:25:02 ID:tJ6l2k50
808です。
ありがとうございます。
A処理は、ほぼ全件検索の帳票印刷。
A処理中、他の処理を立ち上げるととまってしまいます。
(A処理が終わると動き始めます、今度調査しています)
両方ともにSELECT以外はかいていないんですが・・・

815 :NAME IS NULL:2008/02/14(木) 10:41:00 ID:???
>>814
ORDER BYや一時表の作成なんかでtempdbが排他ロックされたと思われ。

SQL Serverの特性で、tempdbのせいで同時実行性が損なわれる場合があるので、
マルチプロセッサの場合にtempdbにプロセッサ数分のファイルを追加するとか、
スナップショット分離(tempdbのサイズに注意)や、読み込みだけだったら
ダーティリードになるけど、SELECTクエリーに(nolock)を付けて読み込むとか。



816 :NAME IS NULL:2008/02/14(木) 17:15:37 ID:???
>A処理は、ほぼ全件検索の帳票印刷
スナップショットサーバーカーソルが使えそうだが、
6.5で使えたかどうかわからない。

817 :ごきぶり:2008/02/14(木) 17:29:15 ID:SJ9/qCJg
>790
ありがとうございます。

818 :NAME IS NULL:2008/02/14(木) 20:01:45 ID:???
>>815
初めて知った
コアヅオだからtempdb増やしてみよ


819 :NAME IS NULL:2008/02/16(土) 14:18:45 ID:ZAE8bFc6
DB:SQL SERVER 2005において、サーバーグループと新規サーバーを登録した
際に、オブジェクトエクスプローラに接続しようとすると、以下のような
エラーが出て、接続できません。

「SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、
SQL Server の既定の設定がリモート接続を許可しないようになっていること
がエラーの原因である可能性があります。」

「SQL Server Browser」を”無効”→”自動”に変え、「DatabaseEngine」
のリモート接続を、”ローカル接続のみ”→”ローカル接続及びリモート接続”
に変えましたが駄目です。

何か他に対処法はありますでしょうか?



820 :NAME IS NULL:2008/02/17(日) 00:52:35 ID:DAxGz+Jq
ファイアウォールの有無を確認するとか、
設定後にサービスを再起動させたかとかくらいしか思いつかないなぁ。

821 :NAME IS NULL:2008/02/17(日) 01:19:33 ID:???
なぁCompact遅くないですか・・・
数千行で顕著にインサートが遅くなってくんだけれど。
これだけじゃわからないとおもうけれど、そんなことはありえない(=自分のミス)なのかCompactならありえるのかだけでも教えてくれ。

822 :NAME IS NULL:2008/02/17(日) 11:55:26 ID:???
>>821
Compact は遅いよ。Compact に数千行もインサートするってどないやねんと、それだけ聞くと思っちゃうな。

823 :NAME IS NULL:2008/02/17(日) 13:41:42 ID:???
SQLiteは早いのに・・・

824 :NAME IS NULL:2008/02/17(日) 14:31:42 ID:???
SQLCE に何を期待しているかによるんじゃないの。
Windows Mobile で動いて PC 上の SQL Server と簡単に組み合わせられるってところは CE ならでは。
なので PDA 上でしか CE を選択しないオレにとっては数千行のインサートなんてしないから、
そのパフォーマンスが悪かろうと使いたいところでは CE を使うよ。

825 :NAME IS NULL:2008/02/18(月) 00:25:08 ID:???
SQLCEのターゲットとして、SQLiteのような、組み込み用途の同じプロセスでライブラリとして動く、手軽かつ高速のデータベースっていうのはないのかね?


826 :NAME IS NULL:2008/02/18(月) 07:45:11 ID:???
DBMSの性能は最後はメモリ勝負だしな。

827 :NAME IS NULL:2008/02/18(月) 15:39:32 ID:???
SQLiteはCEでも動くと思う

828 :NAME IS NULL:2008/02/18(月) 21:56:30 ID:???
大量のデータを削除したいです。
条件の指定できるtruncateってありませんか?
それか一時的にトランザクションログへの書き込みを無効にする方法。
元に戻せなくてもよいので。

SQL Server2005


829 :NAME IS NULL:2008/02/18(月) 22:12:17 ID:???
必要なデータを別のtableにselect intoしておいてから
ALTER tableで差し替えるなり
元テーブルをtruncateしてからINSERTするなりすればいいんじゃない

830 :NAME IS NULL:2008/02/18(月) 22:39:00 ID:???
復旧モードを一時的に変更するんじゃ駄目かな?

831 :NAME IS NULL:2008/02/19(火) 01:03:49 ID:???
SQL Server 2005からだったらDELETEにTOP指定できるようになったんで、
TOPで適当な件数を指定して、削除レコードが0になるまでループするとか。



832 :NAME IS NULL:2008/02/19(火) 02:27:06 ID:???
>>828
>>830 + >>831 がよいと思う。
もし他のトランザクションも同時に動いているから復旧モードを変更するのが NG なら、>>831 でループごとに BACKUP LOG をする。

833 :828:2008/02/19(火) 05:51:30 ID:???
実験してみます

834 :781:2008/02/19(火) 18:44:23 ID:???
>>798
解決かどうかはわかりませんが、当方の環境で一部しか日本語化されなかった原因がわかりました。
SQL ServerをCドライブ以外にインストールすると起きるみたいです(多分
ずっとDドライブにインストールしていたんですが、Cドライブにインストールすることで正常に日本語化されました。
ご参考までに。

835 :NAME IS NULL:2008/02/20(水) 17:21:13 ID:0hiWPJtx
>>747 についての補足情報です。

今日公開された Windows XP Service Pack 3 Release Candidate Build 3311 で
この問題は修正されているようです。
当初修正はせず、KnowledgeBase への掲載という回答だったのですが
問い合わせが多かったのか、方針を変えたようですね。

Windows XP Service Pack 3 Release Candidate 2 via Windows Update
http://www.microsoft.com/downloads/details.aspx?FamilyID=114f3599-12af-42b2-aab1-b969a62c68a7&DisplayLang=en

836 :NAME IS NULL:2008/02/20(水) 20:26:23 ID:???
Microsoft SQL Server 2008 CTP - 2008 年 2 月
http://www.microsoft.com/downloads/details.aspx?FamilyID=749bd760-f404-4d45-9ac0-d7f1b3ed1053&DisplayLang=ja

SQL Server 2008 CTP (Community Technology Preview) の Readme ファイル
http://www.microsoft.com/downloads/details.aspx?FamilyID=298c5443-cc7c-4c22-8d73-fb70c96b5b04&DisplayLang=ja

SQL Server 2008 オンライン ブック Community Technology Preview (2008 年 2 月)
http://www.microsoft.com/downloads/details.aspx?FamilyID=19db0b42-a5b2-456f-9c5c-f295cdd58d7a&DisplayLang=ja

Microsoft SQL Server 2008 用 Feature Pack CTP - 2008 年 2 月
http://www.microsoft.com/downloads/details.aspx?FamilyID=d68de3c9-60a9-49c9-a28c-5c46bbc3356f&DisplayLang=ja

837 :NAME IS NULL:2008/02/21(木) 09:40:15 ID:???
朝からすいません。

SQLServer2005をインストール中なのですが、
デフォルトでインストールしてC:にデータ領域を作ってしまい
その後アンインストールをしてエクスプローラからデータ領域を削除、
再インストールしたのですが、失敗したインスタンスが残ってしまい
同じインスタンスを作成できなくなりました。

インスタンスの削除はどのようにしてやればいいのでしょうか?

838 :NAME IS NULL:2008/02/21(木) 09:55:16 ID:???
詳しくなくて、後々トラブりたくないなら、OSから再インストールする方がよいと思うよ。
詳しい人ならここに書かなくても対処できるだろうけど。

839 :NAME IS NULL:2008/02/21(木) 14:17:27 ID:???
>>837
以下の事を確認してみては?

 ・SQL Serverをアンインストールしたとの事だけど、SQL Server関連のサービスは全て削除されたか。
 ・システム構成チェックでエラーや警告はでなかったか?

それでも駄目なら、インストール時のオプションに"SKUUPGRADE=1"を指定したらインストールできるかも。
詳細は以下のページを参照。

コマンド プロンプトから SQL Server 2005 をインストールする方法
http://msdn2.microsoft.com/ja-jp/library/ms144259.aspx#skuupgrade


あと、データフォルダを変更するだけだったら、MSのサポートオンラインに情報があるけど、これではだめだった?
http://support.microsoft.com/kb/224071/JA/


840 :NAME IS NULL:2008/02/21(木) 15:07:33 ID:???
●同じインスタンス名で上書き再インストール
●インスタンスごと丸ごとアンインストール

これで消える


841 :NAME IS NULL:2008/02/21(木) 15:08:29 ID:???
ああ上書き再インストールじゃなくて
修復再インストールね


842 :NAME IS NULL:2008/02/21(木) 18:31:24 ID:yG4GU6iX
分かれば教えていただけますでしょうか。

現在、SQL Server6.5 SP5a を Windows2000 Server 環境にて利用しております。
ハード的な理由により、別のサーバ機に環境を移すことになりました。
新サーバもなるべく環境を変えたくないため、Windows2000Serverです。

今までも何度かサーバを移したりしましたが、
なぜか今回に限ってSQL Server6.5がインストールできませんでした。
色々調べてみたところ、今回の新サーバがXeon 1.6GHz(Dual CPUです) を搭載しているため
要件の「Intel Pentium または互換の 166 MHz 以上のプロセッサを搭載した PC」に
当てはまっていないのではないかと思っております。

上記理由もあり、いい加減SQL Server6.5 からバージョンを上げようかと思っています。
ただ、現在がSQL Server 6.5というのもあり、エクスポートデータを
上位バージョンのSQL Server で問題なくインポート出来るためにも
いきなり SQL Server2005 などではなく、なるべく近い上位バージョンにした方が
いいのかと考えています。

ここで質問ですが、
1.「Intel Pentium または互換の 166 MHz 以上のプロセッサを搭載した PC」というのは
  Xeon は含まれているのでしょうか。

2.SQL Server 2000 は Intel Xeon を利用したサーバー(OS:Windows2000 Server)に
  導入する事が可能でしょうか。

初歩的な質問かもしれませんが、ご教授頂ければと思います。
宜しくお願い致しますm(_ _)m

843 :NAME IS NULL:2008/02/21(木) 18:40:15 ID:???
>>842
A.1 XeonもPentium互換プロセッサです。
A.2 インストール可能です。

844 :NAME IS NULL:2008/02/21(木) 19:49:52 ID:???
>>842
サービスパックが足りないだけだろう


845 :842:2008/02/21(木) 22:33:26 ID:upE4ML7q
回答有難うございます。

>>843
そうなんですか!
では、SQL Server6.5 が入らなかったのは、要件が合わないという理由では
なさそうですね。。。別の理由があるんでしょうか、、。
とりあず、A2の回答よりSQL Server2000 へ乗り換えの方向で考えてみます。
ありがとうございます。

>>844
サービスパックとはWindows2000Serverのでしょうか?
記入忘れておりましたが、 Windows2000 Server SP4にはなっております。

現象は、SQL Server 6.5 のインストールが途中で止まる、、、と言いますか
進まなくなってしまいます。
INSTMSDB.SQL を修正したり、インストールディスクの空き容量調節など行ってみましたが
どれも効果なし。という結果でした(−−;
出来れば SQL Server6.5 で導入できればいいのですが、
とりあえず解決法が見えないため、上でも書かせていただいたように
SQL Server2000 への移行で手を打とうかと考えております。

もし、解決法などありましたら引き続き回答頂ければと思います。
よろしくお願い致します。


846 :NAME IS NULL:2008/02/21(木) 22:52:29 ID:bAQyT7se
SQL Server 2000をデフォルトの分離レベルで使用しています。

1時間程度の更新系夜間バッチ中、照会系画面の表示が
ブロッキングされます。
分離レベルをREAD UNCOMMITTEDにすればブロッキングは
回避できるかと思いますが、ダーティリードも避けたいところです。

照会系画面がブロッキングされない対策がありましたら
アドバイスをお願いします。

847 :NAME IS NULL:2008/02/21(木) 23:19:28 ID:???
>>846
更新後は排他ロックがかかるので大域の更新が走ってるなら当然ブロックする。
更新期間は他の運用をとめることを勧めるがあえてやりたいなら下記のとおり。
大域の更新をやめて出来るだけ小さい単位でコミットを繰り返す。
更新前にバックアップDBに切り替えて参照専用の運用をする。
READ UNCOMMITEDでダーティリードする。

848 :NAME IS NULL:2008/02/22(金) 01:07:00 ID:???
>>846
簡単な話じゃないかもしれないけど2005にアップグレード
http://www.microsoft.com/japan/sql/ssj/tips/02.mspx

849 :NAME IS NULL:2008/02/22(金) 10:56:07 ID:???
>>845
Virtual ServerにWindows 2000 Serverの環境を作って、そこにインストールするとか。

まあMSのサポートを考えると、SQL Server 2000以降に移行した方がいいけどね。


850 :NAME IS NULL:2008/02/22(金) 23:27:38 ID:mDCxraD7
もうすぐ現在の出向先の仕事が終わりそうなので次はサーバー管理の
仕事をやってみたいのですがSQLServerに関しては何で何を勉強しておけばいいんでしょうか?
ちなみに現在の出向先でもサーバーとSQLSERVERのシステムを一人で保守してますが
サーバー1台だけですし、ACCESSで作ってもいいようなトランザクションもいらない小さな業務システムなので
エンタープライズマネージャーでテーブルデザインしたりデーターベースの復元とバックアップぐらいしかやったことが
ありません。次に行かされそうなところが10台規模のサーバーがありSQLServerとオラクル
が動いているということなので不安でたまりません。
次も1人で行かされそうなのですが飛び込みでやっていけるもんなんでしょうか?
自分としては何か対策を立てておきたいのですが。
あとアーキテクチャ徹底解説SQLServer2000という本が手元にありますが
分厚いので読んでません。

851 :NAME IS NULL:2008/02/22(金) 23:33:58 ID:???
毎日バックアップだけしとけば何も勉強しなくても大丈夫だろ。

852 :NAME IS NULL:2008/02/22(金) 23:55:55 ID:mDCxraD7
>>851
ネットワークの勉強でもしといたほうがいいですかね?
要員は一人で必要スキルは
サーバーがLinuxとwindows(合わせて10台程度。クライアントの数は不明)、データベースがSQL鯖とオラクル、
プログラミングがVB.net,JAVA,C言語。その他がコンテンツの修正が出来る程度(何のコンテンツか不明)、
HTMLを理解している・・だそうです。
C言語は客先の質問に答えられる程度でいいみたいですがC言語、Linux、オラクル、JAVA、Web
なんかは全くの未経験です。医療センターらしいですけどやっぱり危険ですかね?
必要スキルの範囲が妙に幅広いのが気になります。
どんな感じの仕事か推測できる人がいればアドバイスお願いします。


853 :初心者です。:2008/02/23(土) 00:08:13 ID:C6fqHCw3
いままで会社で1人でaccess 2000のmdbでがんばってきたのですが、
仕事量が増えたので、SQL SERVER 2005とaccess 2000のadpにしました。
勉強しながら、だいぶできあがったのですが、1つだけわかりません。
それは、テーブル、ビュー、ストアドがみえている!です。
テーブルの中は別に自由でいいのですが・・・。
複数の人間で仕事するので、テーブル削除さえたら、困るのです。
小さい会社ですので、自分でやるしかないのです。
権限で設定のような気がするのですが、教えてください。

854 :NAME IS NULL:2008/02/23(土) 00:26:02 ID:ooNFZyQq
>>853
MDBでリンクテーブル作ってフォームから入力してもらうじゃ駄目なんですか?

855 :NAME IS NULL:2008/02/23(土) 01:05:04 ID:???
小さい会社だったら、「テーブル削除なんかするなよ」って
おふれ回しときゃいいんじゃないか?

て言うか、テーブルの中身はぐちゃぐちゃになってもいいけ
ど、テーブル自体を削除されたら困るってどういう状況か理
解できないんだが。

そもそも、mdb でやってる時はどうしてたんだよ。

856 :NAME IS NULL:2008/02/23(土) 01:09:17 ID:ooNFZyQq
853は初心者らしいけどフロントエンドとバックエンドって分かってるんだろうか?

857 :NAME IS NULL:2008/02/23(土) 11:05:23 ID:ooNFZyQq
>>855
確かに853は謎だよな。
でもうちの客先でもLinux好きで自分で色々やってる素人がいるんだが
DBMSで社内のデータを管理するって言い出した。
その人プログラミングはできないからどうやってシステム作るんですか?
って聞いたら社員のPCにDBMS付属の管理ツール入れて直接テーブルに
入力させればいいんじゃね?とか言い出してびびったよw

858 :798:2008/02/23(土) 12:00:55 ID:???
>>781 さん

>>834の方法で、当方でも問題解決することができました。
ありがとうございます。

859 :NAME IS NULL:2008/02/23(土) 12:39:27 ID:???
>>850
Linuxとwindows、SQL鯖とオラクル、VB.net,JAVA,C
このうちのどれかひとつがそこそこ出来れば、それだけで食っていけるぞ
上記の案件がすべてこなせる人材の出向だったら、うちの会社じゃ月額240万かかる。
未経験で行くのなら、デスマーチ決定だな

860 :NAME IS NULL:2008/02/23(土) 14:05:24 ID:???
SQLServer2005のSSISにある「SQLServerオブジェクトの転送」って遅いんでしょうか?
試しに10個のテーブルをコピーしてみたら2分近くかかるんです。
SQLServer2000のインポート・エクスポートにあったオブジェクトのコピー(動いてるのはDTSですよね)
だと大して時間かからなかったのに。

要因を探ろうとデータのコピーをなしにしたりネットワークの要因を排除する為に
同じサーバ内で別のDBにコピーさせてみたりしたんですが大して早くならないんです。
ただ同じサーバ内で同じパッケージを連続して実行したら2回目以降はえらく早い(10秒かからない程度。
状況が同じになるようにコピー前に削除はしてあります)ので、
コピーするオブジェクトの情報をDBから集めるのにえらく手間取ってる(2回目以降はキャッシュに当たった?)
のかと思ったのですが、、
DTSに比べてSSISのこの機能は遅くなってしまったんですかねぇ・・・?

同様の経験された方いっらっしゃいませんか。
(SSIS扱うのが今回初めてなのでSSISのパラメータの組み方にも自信がないのですが・・・。)

861 :NAME IS NULL:2008/02/23(土) 14:15:02 ID:???
1回実行したときにDB拡張されてて
削除後に空き領域が出来てて
もう一回実行しても速かった

862 :860:2008/02/23(土) 15:40:18 ID:???
>>861
DBファイル自体はかなり大きめにとってあるのですが・・・。
そして先ほどコピーしたテーブルを削除してから別のテーブル10個で実行すると
同じように時間がかかるのです。
また別サーバからのコピーの際、コピー元サーバの負荷が結構高め、コピー先サーバの負荷が
ほとんどない事からしてそういった問題ではないように思うのですが。。

DTSとSSISの両方でSQLServerオブジェクトの転送を使ったことがある方から、
顕著なスピード的な差が見られたかを教えていただけると助かるのですが・・・。

863 :NAME IS NULL:2008/02/23(土) 19:59:58 ID:ooNFZyQq
>>859
やっぱりそうですか・・
前任者は1年で辞めると言い出したそうですが、人間関係が嫌とのことらしいですが
本当の理由は違うかもしれませんね。
ただ、この業界ってきつそうに書いてても実際は楽だったりその逆もあるので・・
確かにスキルの幅は広いですがひとつひとつのスキルはそこそこでいいのかもしれませんし
どちらにしても内容を詳しく聞けないと危険そうですね。
スキルを上げるために多少未経験の仕事があっても飛び込んでうまくやってる人もいますが
皆さんはどういう基準で仕事を受けてますか?

864 :NAME IS NULL:2008/02/26(火) 17:49:43 ID:???
double よりも decimal を使ったほうが有効桁数が大きいので、
精度の高い値を格納できると思います。

ですので小数点を格納したい値には decimal を用いればいいと
思うのですが、ここで double を用いるメリットは何があるのでしょうか?


865 :NAME IS NULL:2008/02/26(火) 19:46:19 ID:???
漏れは varchar に格納している漏れは勝ち組

866 :NAME IS NULL:2008/02/26(火) 21:17:47 ID:???
>>864
扱える最大値がぜんぜん違う。

doubleは
1797693134862315700000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
00000000000000までいける。

867 :NAME IS NULL:2008/02/27(水) 09:59:02 ID:???
仕様も何も全く違うデータ型なんだから、
同列で比べること自体が間違ってる

868 :NAME IS NULL:2008/02/27(水) 13:46:32 ID:???
0.5を格納して取り出すと値が変わってしまうのはどっち?

869 :NAME IS NULL:2008/02/27(水) 15:25:20 ID:???
>>868
boolean

870 :NAME IS NULL:2008/02/27(水) 15:58:47 ID:???
floatとdecimalの使いわけは何を基準にすべき?

871 :NAME IS NULL:2008/02/27(水) 18:04:51 ID:???
>>870
floatは2進数の小数で格納されるので 2進<->10進変換で誤差が出る場合がある。
たとえば 0.01+0.05=0.06 はfloatで処理するとFALSEになる(実装にもよる思うけど)。

科学技術計算のように誤差が許容できて、すごく大きな値(もしくはすごく小さな値)を
使いたいときはfloat/doubleが便利。

decimalは10進数で処理するので先にあげた誤差の問題がない。


872 :NAME IS NULL:2008/02/27(水) 19:45:59 ID:???
>>870
http://pc11.2ch.net/test/read.cgi/tech/1199424344


873 :NAME IS NULL:2008/02/28(木) 00:24:28 ID:MEMoFgLk
これ本当なんでしょうか?

リンクサーバーから嘘の結果が返ってくる。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43707&forum=26&6



874 :NAME IS NULL:2008/02/28(木) 08:34:50 ID:???
>>873
キーにCHAR使ってるから照合順序が関係してると思う。
Linkedserverの設定やら使われてるOLEDBの情報くらい調べるべきだな。

875 :NAME IS NULL:2008/02/28(木) 11:46:04 ID:0jE/8Q40
>>873
いい嘘な結果が返ってこようが
TPC-E / TPC-H ペンチマークで最高パフォーマンス
が出たんだからいいじゃねぇか。データベースはスピードが命!


876 :NAME IS NULL:2008/02/28(木) 13:32:18 ID:???
これはアメリカのゲームです。1度やってみてください。
これは、たった3分でできるゲームです。試してみてください。驚く結果をご覧いただけます。
このゲームを考えた本人は、メールを読んでからたった10分で願い事がかなったそうです。
このゲームは、おもしろく、かつ、あっと驚く結果を貴方にもたらすでしょう。
約束してください。絶対に先を読まず、1行ずつ進む事。たった3分ですから、ためす価値ありです。
まず、ペンと、紙をご用意下さい。先を読むと、願い事が叶わなくなります。
@まず、1番から、11番まで、縦に数字を書いてください。
A1番と2番の横に好きな3〜7の数字をそれぞれお書き下さい。
B3番と7番の横に知っている人の名前をお書き下さい。(必ず、興味のある性別名前を書く事。男なら女の人、女なら男の人、ゲイなら同姓の名前をかく)
必ず、1行ずつ進んでください。先を読むと、なにもかもなくなります。
C4,5,6番の横それぞれに、自分の知っている人の名前をお書き下さい。これは、家族の人でも知り合いや、友人、誰でも結構です。まだ、先を見てはいけませんよ!!
D8、9、10、11番の横に、歌のタイトルをお書き下さい。
E最後にお願い事をして下さい。さて、ゲームの解説です。
1)このゲームの事を、2番に書いた数字の人に伝えて下さい。
2)3番に書いた人は貴方の愛する人です。
3)7番に書いた人は、好きだけれど叶わぬ恋の相手です。
4)4番に書いた人は、貴方がとても大切に思う人です。
5)5番に書いた人は、貴方の事をとても良く理解してくれる相手です。
6)6番に書いた人は、貴方に幸運をもたらしてくれる人です。
7)8番に書いた歌は、3番に書いた人を表す歌。
8)9番に書いた歌は、7番に書いた人を表す歌。
9)10番に書いた歌は、貴方の心の中を表す歌。
10)そして、11番に書いた歌は、貴方の人生を表す歌です。 この書き込みを読んでから、1時間以内に10個の掲示板にこの書き込みをコピーして貼って下さい。そうすれば、あなたの願い事は叶うでしょう。
もし、貼らなければ、願い事を逆のことが起こるでしょう。
とても奇妙ですが当たってませんか?

877 :NAME IS NULL:2008/02/28(木) 23:26:10 ID:lxCwvbbD
>873
実は昔雑誌のオマケで付いてきたβ版でしたって落ちじゃね?
アレはバグだらけでかなりヒドかった。


878 :NAME IS NULL:2008/03/01(土) 12:28:20 ID:???
SQL Server Compact って鯖じゃないのに何でサーバって名前についてるの?

879 :NAME IS NULL:2008/03/01(土) 14:52:45 ID:???
SQLServerをCompactにしたから

880 :NAME IS NULL:2008/03/02(日) 01:12:27 ID:Ja1oQWs4
sqlserver2005に対してSQL Server Management Studioで接続しています。
レコードを一括で処理するために「新しいクエリ」ボタンを押してSQLを発行しています。
そこであらかじめトランザクションを開始しておいて
いくつかSQLを発行して最後に更新後の値を手動で確認したあと、
コミットしたいと思うのですが、こういう場合どうすればよいでしょうか?
普通にUpdateすると直後に反映してしまいますし、
「begin transaction」を実行してから
別の「新しいクエリ」よりSQLでUpdateを実行した場合も
このトランザクションに含まれないようです。
なにか良い方法ありませんか?


881 :NAME IS NULL:2008/03/02(日) 09:56:26 ID:???
別の「新しいクエリ」を作らずに
一つの「新しいクエリ」の中で連続して実行

882 :NAME IS NULL:2008/03/02(日) 11:11:13 ID:???
bcpユーティリティでテキストへ出力するときにselect条件で対象を絞り込んでからというのは出来ないのでしょうか?


883 :880:2008/03/02(日) 15:09:55 ID:???
>>881
うまくいきました。
同じクエリウィンドウの中だと書き直して再実行しても同一トランザクションと
見なされるんですね。
ありがとうございました。


884 :NAME IS NULL:2008/03/02(日) 15:49:40 ID:???
>>882
テーブル名やビューの代わりにクエリをパラメータとして渡せばできるけど。
http://msdn2.microsoft.com/ja-jp/library/ms162802.aspx

885 :NAME IS NULL:2008/03/02(日) 18:49:42 ID:Ja1oQWs4
SQLServer2005でトリガーを作成しています。
レコードが更新された時に更新されたレコードの
「更新日時」列に現在の日時をセットするトリガーを作成したのですがうまくいきません。
「ブクエリは複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後に続く場合や、サブクエリが 1 つの式として使われる場合は複数の値は許可されません。」
というエラーがレコード更新時に発生します。
UPDATE 〜〜 WHERE 主キー=0
のように1行のみに限定して更新した場合は正常に動作します

ALTER TRIGGER [dbo].[トリガー名] ON [dbo].[TABLE1]
FOR UPDATE AS
UPDATE [TABLE1] SET 更新日時 = getdate() WHERE 主キー = (SELECT 主キー FROM inserted)
何が悪いのでしょうか?
エラー内容からすると「SELECT 主キー FROM inserted」が複数行を返していることが
原因のように見えるのでカーソルとループ使って書き直したのですが
やはり同じエラーが発生してしましました。
何が悪いのでしょうか?
そもそもUPDATEを実行した場合更新したレコードごとに
トリガーが呼ばれるのでSELECT 主キー FROM insertedが
単一のレコードを返すと思っているのですが
私が勘違してますでしょうか?

886 :NAME IS NULL:2008/03/02(日) 21:02:12 ID:???
>単一のレコードを返すと思っているのですが
>私が勘違してますでしょうか?

はい、勘違いしてます。
insertedは複数レコードが入るからjoin使って書き直せばいいんじゃない

887 :NAME IS NULL:2008/03/02(日) 23:17:40 ID:???
>>885-886
WHERE 主キー in (SELECT 主キー FROM inserted)

じゃダメなの?

888 :885:2008/03/03(月) 01:44:03 ID:???
>>886
勘違いしてましたか汗
記憶違いでした。。
join使って無事解決しました。
ありがとうございます。

>>887
WHERE 主キー in (SELECT 主キー FROM inserted)
こちらもOKでした。

この2つはどっちの方が早い(効率的)なんでしょうかね。
自分的には今回のように主キーの場合は
joinにせよinにせよ両方インデックスを調べるので
速度は同じだと思いますが合ってますよね?


889 :NAME IS NULL:2008/03/03(月) 15:33:04 ID:LsZsFXvo
>>888
existsだろ。

890 :NAME IS NULL:2008/03/03(月) 22:30:44 ID:???
>>888
やってみればいいと思うが。

どっちもたいして変わらないなら、自分の好みで。

891 :885:2008/03/03(月) 22:47:15 ID:???
>>889
existsは違いませんか?
existsはレコードを返せばレコードを返せば真を返すだけですよね?
この場合はinだと思います。

>>890
すみません、
手抜きをしたわけではないのですが自分自身SQLを発行して
インデックスが利用されたかを調べる術を知りませんので
こういう書き方になりました。
もちろんやってみたのですが体感的には変わらなかったです。


892 :NAME IS NULL:2008/03/03(月) 23:42:12 ID:???
>>891
existsが正解。マニュアル嫁よ。
inだと主キーが複数項目の場合に対応できんだろが。

893 :NAME IS NULL:2008/03/04(火) 15:23:55 ID:???
>>805
事後報告
select * from linktable...tablename でエラーでてはまってたんだけど
OpenrowsetでパススルークエリにしたらリンクサーバーからPervasive直参照できた


894 :885:2008/03/05(水) 00:04:57 ID:9PCwUBNa
>>890
>>892
existsを使ってトリガを書き直してみました。
書き直し前
UPDATE [TABLE1] SET 更新日時 = getdate() WHERE 主キー in (SELECT 主キー FROM inserted)
書き直し後
UPDATE [TABLE1] SET 更新日時 = getdate() WHERE exists (SELECT 主キー FROM inserted)
やはりexistsを使った方は一行だけ更新した時に
トリガが全行の更新日時が更新されてしまいました。
使い方が間違ってるのでしょうか!?


895 :NAME IS NULL:2008/03/05(水) 00:34:41 ID:???
間違ってる。
この場合、TABLE1の全レコードに対してexistsがTRUE返しちゃうから、
相関サブクエリー(だっけな?)にすればOKじゃね?

896 :NAME IS NULL:2008/03/05(水) 12:06:24 ID:???
MSDE2000ってストアドプロシージャ使えます?

897 :NAME IS NULL:2008/03/05(水) 13:42:06 ID:???
>>896
使えます

898 :885:2008/03/06(木) 01:31:15 ID:uFoRp3ua
>>894
>>895
相関サブクエリー(相関副問い合わせ)ですね。
実はお恥ずかしいことながら初めて聞いた言葉でした。

調べまして結論は以下となり、動作確認OKでしたのでご報告致します。
以下の3つでうまくいきました。
UPDATE TABLE1 SET 更新日時 = GETDATE() WHERE 主キー IN (SELECT 主キー FROM inserted)
UPDATE TABLE1 SET 更新日時 = GETDATE() FROM TABLE1 INNER JOIN inserted ON TABLE1.[KEY] = inserted.[KEY]
UPDATE TABLE1 SET 更新日時 = GETDATE() WHERE EXISTS (SELECT * FROM inserted WHERE inserted.[KEY] = TABLE1.[KEY]

ここまで来てまた疑問が浮かんでしまいました。
この3つでどれがパフォーマンスの観点からベストなのかを調べる方法は
ないでしょうか?
例えばインデックスが利用されることを確認する方法ですとか。。
我が儘言いまして申し訳ないです。
調べるためのキーワードレベルでも構いませんのでお教えいただけないでしょうか?

899 :NAME IS NULL:2008/03/06(木) 06:11:16 ID:???
>899
実行プランを確認してみるといいかも。
ただし、同じSQLでも投入されているデータの量や値の偏りによって、
プランは変わっちゃうから実データに近いものが準備できればベスト。

900 :NAME IS NULL:2008/03/06(木) 07:10:48 ID:???
×>899
○>898
すまん

901 :NAME IS NULL:2008/03/07(金) 13:10:23 ID:???
SQLServerのDTSって、どっかにわかりやすい解説無いですかね
RubyのアプリとCSVで連携する必要が出てきて、
DTS使えばエクスポート出来そうなんだけど
使い方が良くわからんです…(私はRuby開発側なので)

902 :NAME IS NULL:2008/03/07(金) 13:18:58 ID:???
win2000にSQL2000インストールして使っているのですが、
エンタープライズマネージャーからデータベースツリーを開こうとすると異様に時間が掛かっています。
ログを見ると「データベース'XXX'の開始中」が1つのデータベースにつき20回くらい発生しています。
データベースの復旧もダイアログが出るまで時間が掛かっているのですが、
何かオプションとかで解決するもんなんでしょうか?

903 :NAME IS NULL:2008/03/07(金) 22:46:13 ID:???
主キーって連結より単一の方がパフォーマンスいいのでしょうか?
5列を連結するより、自動追加の列で特定する方が早そうな気がしますが


904 :NAME IS NULL:2008/03/08(土) 01:31:03 ID:???
レコード最大で1000万件くらいになりそうなのですが、耐えられるの?

905 :NAME IS NULL:2008/03/08(土) 10:25:04 ID:???
>>904
平気。としか言いようがない。
マスタとなる顧客テーブルが2,000万件、
受注テーブルが6,000万件程度なら経験ある。
オンラインが利用しているテーブルのうち、一番件数多いので1億強だったかな。
2000Entと2005Ent(x64)。

906 :NAME IS NULL:2008/03/08(土) 13:37:47 ID:???
>>904
ttp://www.microsoft.com/japan/showcase/mercian2.mspx

907 :NAME IS NULL:2008/03/08(土) 14:23:26 ID:???
適切な索引が付いていてそれがまともに使用されていれば大丈夫。
むしろバックアップやリストアにかかる時間など運用の方が先に問題になってくる。

908 :904:2008/03/08(土) 22:00:41 ID:???
さんくす。
しっかし皆すげー量のデータ扱ってんだな・・。

909 :NAME IS NULL:2008/03/08(土) 22:04:01 ID:???
女は世の中に星の数ほどいることを知った904であった

910 :NAME IS NULL:2008/03/10(月) 17:24:57 ID:qMij27lQ
すいません。教えてください。

SQL Server Management Studioや
VisualStudioのサーバエクスプローラから
プライマリキー以外のキーにUnique制約を
付けるのはどうするんでしょう?

SQL Server 2005を使っています。

911 :NAME IS NULL:2008/03/10(月) 22:10:49 ID:???
>>910
Management Studioならテーブルをデザインで開いて
対象列の行を選択して右クリック
「インデックス/キー」
追加ボタン
全般の「UNIQUE」を「はい」
だと思います。

912 :デフォルトの名無しさん:2008/03/11(火) 18:56:57 ID:qPjyzYRo
>>905
それって速度的な面はどんなもんなんでしょうか・・・
客先のDBが4年位で6Gまで膨れ上がってて、
処理が日ごとに遅くなったってクレーム来るんだよねorz
どういう対応したらデータ量大きくなっても大丈夫なのか分からぬ。
何か画期的な対策ってないものでしょうか。

913 :NAME IS NULL:2008/03/11(火) 20:51:33 ID:???
>>912
日々膨らむデータに対してはキーのレンジ単位に1台づつ
物理的にDBサーバ増やして対処してるの見た(使った)ことある。
(0〜1000,000はDBサーバA、1000,001〜2000,000はDBサーバBにあるってイメージ)
もちろんバックアップなどの運用はかなり大変だったようだが。


914 :NAME IS NULL:2008/03/11(火) 21:07:52 ID:???
大容量のバックアップはlitespeedを買って
相応のCPUリソースを用意すればある程度なんとかなる

915 :NAME IS NULL:2008/03/11(火) 23:02:50 ID:???
>>912
教科書的な回答としては、テーブルをパーティション分割する事かな。
http://www.microsoft.com/japan/msdn/sqlserver/sql2005/sql2k5partition.aspx


916 :NAME IS NULL:2008/03/11(火) 23:04:44 ID:Jdx/X7qD
SQL Server 2005のサービスが何もないんですけど、
どうしたらサービスを作ることができますか?

917 :905:2008/03/11(火) 23:13:31 ID:???
>>912
自分が入った時にオンラインのレスポンスでクレームあった以外は特に。
その時は重複インデックスの削除、tempdbの分割あたりで解決したような。
その後は予算にも恵まれ、H/W変更もできたのでまぁ順調。

他システムからのファイルを取り込むバッチが多いんだけど、
BULKで突っ込んだり1件単位のコミットを行わないですむように工夫したりはしてる。

918 :NAME IS NULL:2008/03/11(火) 23:26:19 ID:???
>>916
SQL Server 買う時に、インストールまでやってくれってベンダに言っておけばいい。

919 :NAME IS NULL:2008/03/12(水) 01:23:35 ID:???
>912
10〜50GBとかくらいのサイズになってるDBとかあるけど
インデックスとか適切なのだと大丈夫だけどそうでないとサイズがでかくなったとたんにきつくなるね。
おまじないとしてsp_updatestatsを実行してからプロファイラで重いクエリを調べて
重いものから順にインデックスがちゃんと効くように見直してく。
インデックスがちゃんと効くようになるとSQLServerのプロセスの
メモリ使用量が一気に減るから全体的にパフォーマンスがよくなる。
レコード数に偏りがあるような場合に明示的にインデックスを指定しないと駄目なこともある感じ。
特にインデックスが複数ある場合に適切じゃないインデックスが使われてすごく重いことがあるかな。

920 :NAME IS NULL:2008/03/12(水) 01:55:33 ID:???
updatestatisticsで思い出したが
インデックスを作ってあるフィールドの内容に偏りがあると
統計に上手く反映されなくてインデックスが効果的に使われないってことがあったな
ちとSQL文を忘れたけど、この場合は統計に使うレコードの率を増やしてやると
嘘のようにパフォーマンスが上がったりする。

921 :NAME IS NULL:2008/03/12(水) 15:27:10 ID:???
sp_updatestatsを日曜日深夜に全レコード対象にかけるとか


922 :名無しさん:2008/03/12(水) 17:15:44 ID:/lIQk/Cr
列名に()を使いたいのだがエラーがでる。
どうしたらいい?

923 :NAME IS NULL:2008/03/12(水) 17:27:10 ID:???
>>922
ダブルクオーテーションで囲えばいけると思う。
クライアントソフトによってはSET コマンドで設定がいるかもしれない。

924 :NAME IS NULL:2008/03/12(水) 17:27:37 ID:???
>>922
[ ]で囲めばいいと思うよ。


925 :名無しさん:2008/03/12(水) 19:07:50 ID:/lIQk/Cr
>>923 924

サンキュー 助かったありがとう

926 :NAME IS NULL:2008/03/12(水) 23:22:03 ID:???
テーブルサイズの計算について、勉強するのに有益なサイトありませんでしょうか?

927 :NAME IS NULL:2008/03/13(木) 08:05:06 ID:???
>>926
普通マニュアルに書いてあるけど。

928 :912:2008/03/13(木) 13:37:19 ID:???
>>913-921でレスくれた方
ありがとうございます。
とりあえず外部キー等指定頻度の高い項目にまでインデックスを貼ってみたところ
速度が改善されそうです。
パーティションも考えましたが客先は2000なので次の手段として温めておきますorz

月末のアクセス集中砲火のときに耐えられるか心配ですが
とりあえずこれで進めてみようと思います。

929 :NAME IS NULL:2008/03/13(木) 23:59:06 ID:???
外部キーとなる列には非クラスタ化インデックス付けた方がパフォーマンスいいの?

930 :NAME IS NULL:2008/03/14(金) 11:35:09 ID:???
varcharは可変長文字列なので大きめに取っておいても問題ないですか?
30くらいのフィールド数の場合、全部varchar(200)とかにした場合、
パフォーマンス的に影響があったりしますか?

931 :NAME IS NULL:2008/03/14(金) 14:09:40 ID:???
OllKorrect

932 :926:2008/03/14(金) 23:03:58 ID:???
>>927
素人ですみませんが、int型とかdatetime型も固定バイトに当たるのでしょうか?

933 :NAME IS NULL:2008/03/15(土) 00:54:00 ID:???
SQLServer2005でテーブル定義を今書いているのですが、
SELECTする時は必ずORDER BY DESCする列があります。
こういう場合に検索を速くするためにすることってありますか?



934 :NAME IS NULL:2008/03/15(土) 15:20:34 ID:???
遅レスで申し訳ない。

>>825
> SQLCEのターゲットとして、SQLiteのような、組み込み用途の同じプロセスでライブラリとして動く、手軽かつ高速のデータベース

VistaDBってのを見つけたよ。
http://www.vistadb.net/

 Developers can build embedded cross-platform ASP.NET and WinForms
 database applications for desktops, mobile devices and web servers using
 VB.NET, C# or any other Dot Net enabled language.

 ・ Small < 1 MB footprint truly embedded ZeroClick
 ・ Microsoft SQL Server 2005 compatible data types and T-SQL syntax
 ・ None of the SQL CE limits

なお、最近出た Express版の方は「No Compact Framework support」(公式blog)
な模様。

935 :NAME IS NULL:2008/03/16(日) 21:29:19 ID:???
VisualStudio2008をインストールすると、Ce3.5へバージョンアップしますが、
SQLServer2005からCe3.5のsdfファイルにアクセスするとエラーが起きます。
この原因がわかりません。
数週間前から調べてますが・・・。

http://f42.aaa.livedoor.jp/~imawaka/imgboardphp/src/1205670544209.jpg


936 :NAME IS NULL:2008/03/16(日) 23:07:10 ID:???
ManagementStudioが認識できるようにモジュール入れないとだめ。
インストールの仕方はMSDNのどこかに載ってる。
ComactEdtionのSSMSへのインストールとかうんたらで。
でも結局自分はあるはずのファイルがなかったりエラーになったりしたのでSQLServer2008を入れることにした。
とりあえず2008のSSMSからいじれてる。


937 :NAME IS NULL:2008/03/16(日) 23:08:45 ID:???
>>936
私も2008入れています。
モジュールの入れ方を調べててもHitしそうになかったのでw

ありがとうございました。

938 :NAME IS NULL:2008/03/17(月) 11:08:11 ID:???
>>935
アホやね。
わざわざ画像をつけんでも、ダイアログの左下にあるアイコンをクリックすればエラーのテキストがクリップボードに
コピーされるだろうに。しかもこの画像では大事なところが隠されてないか?例外クラスとかさ。

ところでさ、
> SQLServer2005からCe3.5のsdfファイルにアクセスするとエラーが起きます。
"SQLServer2005" ってどういう意味だ?「SQL Server 2005 に付属の Management Studio から」っていう意味か?
もしそうなら、この辺から参考にしてがんばってみてくれ。例外の内容でぐぐればいっぱいヒットするぞ。

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2542032&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2967469&SiteID=1

939 :938:2008/03/17(月) 11:09:42 ID:???
おれもアホやね。リロードせなアカンかったわ。

940 :NAME IS NULL:2008/03/21(金) 22:29:54 ID:???
SQL Server2005について質問です.

1.
key列に 'TOKYO' と 'Tokyo' が混在するとPRIMARY KEY 違反になってしまうのですが,
両方を区別するにはどうすればよろしいでしょうか?
DISTINCTやGROUP BYでも区別してくれませんでした
SQL Server Management Studio Expressでクエリを入力する時に
大文字と小文字を区別しない(テーブル名などで)のも同じ原因でしょうか?

2.SQL Server Management Studio Expressで,オブジェクトエクスプローラーなどを日本語表示にする
パッチ等があれば教えて下さい.

以上よろしくお願いします.

941 :NAME IS NULL:2008/03/21(金) 23:51:52 ID:???
1 無理
2 日本語版がある

942 :NAME IS NULL:2008/03/22(土) 00:57:01 ID:???
>940
大文字小文字違いのデータを入れたいならその列の照合順を変えろ。
クエリのテーブル名などの大文字小文字が区別されるのはDB自体の照合順の影響。
テーブル名の大文字小文字とかも区別したいならDBの照合順を変えろ。

943 :NAME IS NULL:2008/03/22(土) 12:04:04 ID:???
大文字/小文字区別はPKにしてると出来なかったんじゃなかった?

944 :NAME IS NULL:2008/03/22(土) 12:47:31 ID:???
>>943
外部キーとリファレンス先のCOLLATEはあわせたほうがいいかも。
COLLATE Japanese_CS_AS_KS_WSが妥当かな?

945 :NAME IS NULL:2008/03/22(土) 21:18:43 ID:xRI/qUei
SQL Server 2005のフリー版のやつにプロファイラってついていますか?

946 :NAME IS NULL:2008/03/22(土) 23:21:53 ID:???
Express版には付いていない。

947 :NAME IS NULL:2008/03/22(土) 23:39:51 ID:b4GggKf+
音楽のアルバム名を登録したテーブル「アルバムTBL」と
それに収録されている曲名リストを登録したテーブル「トラックTBL」があります。
指定した二つの曲が共に収録されているアルバム名を取得したいのですが、
どんなSQLになりますか?
二つのテーブルは「アルバムID」列で結合可能です。
アルバムTBLでアルバムIDは主キーです。

948 :NAME IS NULL:2008/03/23(日) 22:14:48 ID:???
>947
SELECT アルバム名 FROM アルバムTBL WHERE
EXISTS (SELECT * FROM トラックTBL WHERE トラックTBL.アルバムID = アルバムTBL.アルバムID AND トラックTBL.曲名 = @曲名1)
AND EXISTS (SELECT * FROM トラックTBL WHERE トラックTBL.アルバムID = アルバムTBL.アルバムID AND トラックTBL.曲名 = @曲名2)
とりあえずパフォーマンスとかどうでもよかったらEXISTSで手抜き。
パフォーマンスが気になるレコード数があるか想定するなら普通の表結合に書き直してね。

949 :NAME IS NULL:2008/03/24(月) 15:57:21 ID:/VnKEb27
VisualStudio2005インストール後にSQL Server2005をインストールしたんだけど、
ManagementStudioが見つからない(スタートメニューにない)
SQLServerのDVDを入れて追加でインストールしようとしても、
「開発ツールはインストール済みです」みたいなメッセージが出ます。
ManagemetStudioを入れるにはどうすればいいですか?

環境
OS:Windows Vista Ultimate
VS:2005 SP1
SQL:2005 SP2

950 :NAME IS NULL:2008/03/24(月) 19:19:16 ID:???
ManagementStudioはVisualStudio内の一機能として実装される。
ヘルプ引けば一発

951 :NAME IS NULL:2008/03/25(火) 04:27:12 ID:???
>>949
スタート+R -> sqlwb -> enter
でいつも起動している。

スタートメニューに出てこないってのはインストール順によって
そういうことになるという書き込みを見たような気がするが、
スタートメニューは使わないのでどうしたらいいかは覚えてないわ。

952 :NAME IS NULL:2008/03/25(火) 13:59:28 ID:9n2z5qiu
SQLの2005を使っています。
しかし突然SQLに突然つながらなくなりました。
データが壊れたようなんですが、壊れたmdfとldf が残っております。
また1ヶ月ほど前にバックアップを取ったmdfとldfもあります。
なんとか復旧する方法はないでしょうか。
壊れたmdfとldfはアタッチしようとしても
-------------------------------------
タイトル: Microsoft SQL Server Management Studio Express
------------------------------

サーバー 'HIROSHI\ARIADNE' のデータベースのアタッチに失敗しました。 (Microsoft.SqlServer.Express.Smo)

ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=データベースのアタッチ+Server&LinkId=20476 をクリック

------------------------------
ADDITIONAL INFORMATION:

既存のデータベースと同じ名前のデータベースをアタッチできません。 (Microsoft.SqlServer.Express.Smo)

ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&LinkId=20476 をクリック

------------------------------
BUTTONS:

OK
------------------------------
このエラーが出てしまって復旧できません。
お願いします。

953 :NAME IS NULL:2008/03/25(火) 14:04:57 ID:???
今までWinNT + SQL6.5だったのが、
今度からWin2003server + SQL2005にグレードアップすることになりました!
恐らくこのスレにお世話になることと思います〜ウヒ

954 :NAME IS NULL:2008/03/25(火) 14:06:06 ID:???
MERGE欲しいよう

955 :NAME IS NULL:2008/03/25(火) 14:06:32 ID:9n2z5qiu
すみません、エラーが間違っていました。
タイトル: Microsoft SQL Server Management Studio Express
------------------------------

サーバー 'HIROSHI\ARIADNE' のデータベースのアタッチに失敗しました。
(Microsoft.SqlServer.Express.Smo)

ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.
Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=データベースのアタッチ+Server&LinkId=20476 をクリック

------------------------------
ADDITIONAL INFORMATION:
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo)
------------------------------
データベース 'Ariadne'(ID: 5) のページ (1:1310) で内部操作中に、一貫性が損なわれていることが検出されました。
ご購入元に問い合わせてください。参照番号 3。
データベース 'Ariadne' でログに記録された操作をやり直しているときにエラーが発生しました。
エラーが発生したログ レコード ID は (3124:1484:2) です。
通常、この前に特定のエラーが Windows イベント ログ サービスにログ記録されます。
完全バックアップからデータベースを復元するか、データベースを修復してください。
新しいデータベース 'Ariadne' を開けませんでした。CREATE DATABASE は中止されます。
(Microsoft SQL Server、エラー: 5242)
ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&
EvtSrc=MSSQLServer&EvtID=5242&LinkId=20476 をクリック
------------------------------
BUTTONS:
OK
------------------------------
このエラーでした

956 :NAME IS NULL:2008/03/25(火) 21:46:19 ID:3ZCn973U
>>954
マジほしい
2005でもないのか?

957 :NAME IS NULL:2008/03/25(火) 23:54:33 ID:???
時代は2008なんだがw

958 :NAME IS NULL:2008/03/26(水) 00:47:15 ID:???
>>956
2005じゃ無い。
2008は有る。

959 :NAME IS NULL:2008/03/26(水) 12:41:31 ID:???
>>949
自分のメモに書いてあったんでコピペしとく。

問題
SQL Server をインストールした後、Management Studio がプログラム メニューにない。

解決方法
Start -> Run -> appwiz.cpl から Microsoft SQL Server 2005 の構成を変更し、
ワークステーション コンポーネントをアンインストールする。その後 Tools\Setup.exe を起動してワークステーション コンポーネントをインストールする。

説明
この問題は次のような時に起きる。
Visual Studio 2005 をインストールするなどして、SQL Server Express がインストールされる。
その後に SQL Server の上位エディションをインストールすると、ワークステーション コンポーネントのインストールがブロックされるため、
Management Studio がインストールされない。

960 :NAME IS NULL:2008/03/26(水) 12:42:36 ID:???
>>952
一ヶ月ほど前のバックアップをもどす。
SQL Server のサービスを停止する。
壊れた mdf と ldf を上書きする。
SQL Server のサービスを起動する。
DBCC CHECKDB を実行する。

961 :NAME IS NULL:2008/03/26(水) 17:04:02 ID:???
レスありがとうございます。
----------
一ヶ月ほど前のバックアップをもどす。
SQL Server のサービスを停止する。
壊れた mdf と ldf を上書きする。
SQL Server のサービスを起動する。
---------------
この時点でオブジェクトエクスプローラーでデータベースを確認すると、
(未確認)となってしまっていてDBCC CHECKDBが実行できないのです。
実行できる方法はありますか?

962 :NAME IS NULL:2008/03/27(木) 00:26:55 ID:???
>壊れた mdf と ldf を上書きする。
デタッチしてから上書き
そんでアタッチ
としてもだめかね?

963 :NAME IS NULL:2008/03/27(木) 01:43:19 ID:???
デタッチもできないんです。

964 :NAME IS NULL:2008/03/27(木) 02:05:39 ID:???
>>961
それは激しく壊れているのでバックアップから戻しなさいという意味だね。
非公開の方法だけどその状態でも多少なんとかなる方法はある。
だけどできるかどうかは保障しないし、データの整合性なんかも保障されないよ。

データベース名や ldf のパスは自分の環境に適当に変えて、自分でリスクを負ってやってね。

-- システム テーブルを直接更新できるように設定を変える
USE master
GO
sp_configure 'allow updates',1
GO
RECONFIGURE WITH OVERRIDE
GO
-- データベース ステータスを緊急に変更する
UPDATE master..sysdatabases SET status = 32768 WHERE name = 'Northwind'
GO
-- トランザクション ログ ファイルを再構築する
USE master
GO
DBCC REBUILD_LOG('Northwind', 'C:\Program Files\Microsoft SQL Server\MSSQL$INSTANCE\Data\northwnd.ldf')
GO
-- データベースの整合性をチェックする
USE master
GO
DBCC CHECKDB(Northwind)
GO
-- これで直らない場合は適宜 CHECKDB のオプションを増やしていくか、BCP でデータだけサルベージする

-- データベース ステータスをを緊急からオンラインに戻す
UPDATE master..sysdatabases SET status = 16 WHERE name = 'Northwind'
GO
-- システム テーブルを直接更新できるようにした設定を戻す
sp_configure 'allow updates',0
GO
RECONFIGURE WITH OVERRIDE
GO
-- もう一度データベースの整合性をチェックする
USE master
GO
DBCC CHECKDB(Northwind)
GO
-- データベースのプロパティが変わってないかチェックする

965 :NAME IS NULL:2008/03/27(木) 10:43:25 ID:???
>>964
ありがとうございます。
やってみます。

966 :NAME IS NULL:2008/03/27(木) 11:30:01 ID:???
DBCCでの構文エラーが出てしまいます。
もう少しSQLについても調べてみます。

967 :NAME IS NULL:2008/03/27(木) 14:53:08 ID:???
SQLの質問なんですが、SQL Serverなのでこちらに質問させてください。
SQL Server 2000

(入力)
XX08-001-0AB
XX07-087-7BB
XX07-401-7BB
XX07-500-10CC

(欲しい出力)
XX08-001
XX07-087
XX07-401
XX07-500

二つ目のハイフン以降を切り落としたものが欲しいのですが、
SQLだけで処理できますか?

968 :NAME IS NULL:2008/03/27(木) 15:59:09 ID:???
SELECT LEFT(項目,8)   とか?

969 :NAME IS NULL:2008/03/27(木) 17:00:11 ID:???
すいません、例が悪かったです。
それだったら確かに簡単ですよね。

(入力)
XX08-1-0AB
xx07-87-7BB
XX07-500-10CC

(出力)
XX08-1
xx07-87
XX07-500

です。お願いします。

970 :NAME IS NULL:2008/03/27(木) 20:03:59 ID:???
これでいけるのでは?
substr(項目, 0, instr(項目, '-', -1, 1))

971 :NAME IS NULL:2008/03/28(金) 08:56:47 ID:???
'instr' は 関数名 として認識されません。

エラー出ました↑
SQL Server2000 にはinstr無いんですね。
代わりにcharindexを使って解決できました。

substring(項目, 0, charindex( '-', 項目, charindex( '-', 項目) +1))

同じ関数がネストして、なんか不格好なのですが・・・

972 :NAME IS NULL:2008/03/28(金) 16:01:52 ID:???
>>971
ストアドファンクション使えばいいと思うよ。


973 :NAME IS NULL:2008/03/28(金) 17:39:00 ID:???
2000でインデックスチューニングウイザードを行おうとしたら
ワークロードが必要といわれました。
SQLプロファイラで何かすればいいとどこかに書いてあったのですが
ワークロードはどうやって作ればいいのでしょうか?

974 :NAME IS NULL:2008/03/30(日) 12:37:50 ID:???
>>973
役に立たないウィザードに頼らず、
自分でインデックス張れ。
ゆとりか?

975 :NAME IS NULL:2008/03/30(日) 15:38:15 ID:???
>>973
どんな使い方をするかシナリオがないとどうチューニングしていいかわからないだろ。
そのシナリオがワークロード。
内容はそれなりの分量になるからまずBooks Onlineを読もう。

976 :NAME IS NULL:2008/03/31(月) 17:50:53 ID:???
SQLServerでの文字列ソート順序と.NETでの文字列ソート順序が異なるようなのですが、一致させるためにはどの部分をいじればいいんでしょうか・・・教えてエロイ人(´・ω・`)

977 :NAME IS NULL:2008/03/31(月) 20:50:28 ID:???
照合順序でググって美奈代

978 :976:2008/03/31(月) 23:13:40 ID:???
Windows照合順序とかJapanese_90あたりがくさそうですが、よくわからず・・・
明日また調べてみるです。

979 :NAME IS NULL:2008/04/01(火) 20:36:52 ID:VVV3Eqei
>>911
超遅レスですがありがとうございました。

そこはインデックスしか指定できないと思ってました。

980 :NAME IS NULL:2008/04/02(水) 07:01:56 ID:???
Windows2000Server Standard + SQLServer2000 Standard(SP4)で動いている
システムがあるのですが、サーバマシンの挙動がおかしくなっているので、
マシンのリプレースを考えています。

SQLServer2000をそのまま使った場合、Windows2003Serverは32Bit版と
64Bit版(WOW64上で動かす)とではどちらが安定性や速度的に優位でしょうか?

981 :NAME IS NULL:2008/04/02(水) 19:29:51 ID:???
今日、ビューのDDLでサブクエリにWITH(NOLOCK)とかWITH(ROWLOCK,UPDLOCK)
などをつけてるのを発見した。ビューのSELECT文にこんなのつけて何の意味がある
のかさっぱりわからない。ぐぐってもよくわからない。SQL Server 2000です。

982 :NAME IS NULL:2008/04/02(水) 19:39:46 ID:7rgZDuiK
TEST_TABLEというテーブルの、binary型のb_dataというフィールドのバイナリデータを
image型に変更したい場合、

SELECT CAST(b_data as image) FROM TEST_TABLE

でよろしいでしょうか?
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200508/05080029.txt
に記載されていることを実現したいと思っております。

983 :NAME IS NULL:2008/04/02(水) 19:41:04 ID:7rgZDuiK
↑すいません、SQLSERVER2005です。

984 :NAME IS NULL:2008/04/02(水) 20:34:56 ID:???
>>981
Books onlineは検索したのか?

985 :NAME IS NULL:2008/04/02(水) 21:20:15 ID:lPTIXeR8
>>984
はい、CASTのページを確認しましたが、使用例がよくわかりませんでした。
http://oshiete1.goo.ne.jp/qa1104315.html
こちらの記載となんとなく違うような・・・

986 :NAME IS NULL:2008/04/02(水) 23:51:26 ID:???
>>985
NOLOCKとかROWLOCKとかはCastじゃなくてテーブルヒント。
BooksOnlineをNOLOCKで検索してFROM句とロックのヒントという項目を読め

987 :NAME IS NULL:2008/04/03(木) 02:44:34 ID:???
PerlからSQL Serverにつなぎたいのですが、お勧めの
モジュール等ありましたらご教示ください。

988 :NAME IS NULL:2008/04/03(木) 10:00:10 ID:???
お勧めといっても、選択肢は
1.Win32::OLEを使ってADOアクセス。
2.DBD::ADOドライバを使ってDBIアクセス。
3.DBD::ODBCドライバを使ってDBIアクセス。
の3つしかない。

1.はコード量が多くて汚くなるけど、自由度は一番高いんじゃないかな。
  ActivePerlなら標準でついてくるというメリットもある。
2.はすっきりと書けるけど、バインド処理に不具合(回避可能)あり。
3.はODBCというだけで敬遠して使ったことないけど案外いいかも。

ちょっとしたSELECT程度なら、すぐに始められる1.でいいと思うよ。

989 :NAME IS NULL:2008/04/03(木) 18:47:58 ID:bavQZfEk
>>986
ありがとうございました。解決いたしました。
結局、最後までBOOKS ONLINEに書かれていることは理解できませんでしたがw

990 :NAME IS NULL:2008/04/04(金) 01:55:25 ID:???
>>988
非常に有益な情報、有難うございました。
本当に参考になりました。

個人的にはDBIがなれていて好きなので(Postgres等で
使用経験あり)、DBD::ODBCを使用してみようかと思って
おります。

有難うございました。

991 :NAME IS NULL:2008/04/04(金) 11:16:53 ID:???
>>980
オレならいろんな理由で32bitだな。

352 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)