Microsoft SQL Server 総合スレ 6at DB
Microsoft SQL Server 総合スレ 6 - 暇つぶし2ch757:NAME IS NULL
08/11/05 18:00:13
>>755-756
ありがとうございます。
参考にさせてもらいます!


758:NAME IS NULL
08/11/05 18:20:09 8CuM4UUP
復旧モード「フル」に設定してるのにトランザクションログがぶりぶり切り捨てられてる。
初回の全体バックアップの実行前だとこんな現象が発生してるんだけど、これってSQLSERVERの仕様?

データベースが全体バックアップ済みか否かって、どこ見て判断してるんだろか?

759:NAME IS NULL
08/11/05 22:20:09
>>758
仕様。中程にある「重要」を読め。
URLリンク(msdn.microsoft.com)

760:sage
08/11/06 09:58:01 xzbCwz05
>>759
ありがとう!

>データベースが全体バックアップ済みか否かって、どこ見て判断してるんだろか?
こっちは解らない? msdb..backupfileを参照してるのかと思ったがどうも違うみたい。


761:NAME IS NULL
08/11/06 11:00:34
初心者で言葉足らずかもしれませんが、
ご教示いただきたい事があり、書き込ませていただきます。

OSがWindowsServer2008のマシンにSQLServerExpressEdition(SQL Server認証)で
データベースを構築し、ADO接続しようとしたところ、

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

というメッセージが出て接続できませんでした。

WindowsXPとSQLServerExpressEditionで構築した場合、
同じADO文(?)で接続できました。

気になっているのは、
ADO文の「Data Source=(Local)」の部分で、
WindowsServer2008では書き方が変わってしまうのか?
ということと、
WindowsServer2008にSQLServerExpressEditionをインストールした際、
ユーザ名とパスワード設定のところで
「複雑なパスワード」を要求されたため、
記号入り(アットマークを使用)のパスワードを設定したので、
それが引っかかっている可能性があるかと考えています。

ただし、エラーメッセージを読む限り、
SQLサーバの認証で蹴られてるのではなくて、
SQLサーバ自体を見つけられていないような気がするのですが・・・

長文になり、申し訳ありませんが、
ご助力のほど、よろしくお願いいたします。

762:NAME IS NULL
08/11/06 13:18:04
サービスが起動しているのかということと
構成マネージャで TCPの通信ができるようになってるかまずは確認してみれば?


763:NAME IS NULL
08/11/06 21:12:45
ローカルからのTCP接続ができるかどうかの確認かな。

764:NAME IS NULL
08/11/06 21:13:45
あらごめん。すでにローカルか。
んじゃ>>762と一緒でTCP通信可否設定の確認だね。

765:NAME IS NULL
08/11/06 23:27:54
つか(Local)って時点でネットワークを見ないんだぜ?

766:よしき
08/11/07 10:36:05 WjJ9IoZm
つまらない質問で申し訳ないんですが、SSMSにてクエリエディタに行数を表示させるにはどうしたらいいのでしょうか??
宜しくお願いいたします。

767:NAME IS NULL
08/11/07 14:26:06 j3syhTYc
私もつまらない質問で申し訳ないのですが

Windows XP Home Edition(SP3)に
SQL Server 2008 Express Editionをインストールすることは
できるのでしょうか? できた場合も制限とかあるのでしょうか?

当方学習目的なもので、システム構築云々といった
だいそれた事は考えていません

768:NAME IS NULL
08/11/07 16:22:19
タダなんだから試してみろよ
それが学習だよ

769:NAME IS NULL
08/11/07 16:56:47
>>767
インストールは出来ますが、GUIツールなどに大きな制限があります。
コマンドを打つのに慣れているのであれば問題ありませんが、
学習目的であれば、GUIツールを使っての操作がいいでしょうし、
各種メンテ用のツールで、システムの動きを確認しながらの方が
イメージがつきやすいと思います。
Developer Edition の購入をお勧め致します。

770:NAME IS NULL
08/11/07 17:02:05
>>762>>763>>764>>765
返信ありがとうございます。

構成マネージャで確認してみましたところ、
TCPが無効になっていましたので、有効に切り替えてみましたがだめでした。

サービスについても「SQL Server」は開始になっておりました。

あとはsaのパスワードの「@」が怪しいのかなぁと思い、
再インストールしてsaのパスワードを変更してみようと思います。

ちなみに再インストール以外でsaのパスワードって変更できるんでしょうか?

771:NAME IS NULL
08/11/07 17:21:51
>>767
>>769
SQL Server 2008 Express EditionもGUIツールあるよ。

SQL Server Management Studio Express
URLリンク(msdn.microsoft.com)


772:NAME IS NULL
08/11/07 17:26:18
>>770
> ちなみに再インストール以外でsaのパスワードって変更できるんでしょうか?

SQL Server Management Studioで[セキュリティ]-[ログイン]でsaのプロパティを開いて
パスワードとパスワードの入力確認を入力。


773:NAME IS NULL
08/11/07 17:32:15
>>770
ユーザー名に@が含まれるならまだわかるけど、パスワードに@はあまり関係ないと思われ。
一度、ADOの接続文字列を公開してみるとか。(パスワードの部分は消して)


774:NAME IS NULL
08/11/07 17:54:33
>>771
そういうのを見つけ切れなかったわけだから、
ここで質問してるんだと解釈したんだけどなw
そこまで分からないのであれば、ということで
製品版を勧めたのだよ。
180日評価版とかの案内をしても制限は?とか
ぐだぐだいいそうだし。

775:NAME IS NULL
08/11/07 20:29:12
GUIツールが見つからないなんて言ってないような。
XPに入るの?っていうことだけだよね。

776:NAME IS NULL
08/11/07 23:15:04
つまらない質問ですが、つまらない質問するにはどうすればいいのか教えてください。

777:NAME IS NULL
08/11/07 23:21:58
書け!
そして叩かれろ! 以上

778:776
08/11/07 23:29:33
>>777
早速のご丁寧な回答、ありがとうございます。

より、つまらない質問が書けるように努力したいと思います。


779:NAME IS NULL
08/11/08 00:02:55
> より、つまらない質問が書けるように努力したいと思います。

もう充分だ。

780:NAME IS NULL
08/11/08 01:03:30
180日間限定の奴って期間過ぎたら自動的に使えなくなるって事でいいんだよね?

781:NAME IS NULL
08/11/08 01:54:22
>765
tcp:(local)
がいいんじゃないかと。

782:NAME IS NULL
08/11/08 08:15:19
SQL Server 2005 Service Pack 3 - CTP - 日本語
URLリンク(www.microsoft.com)

783:NAME IS NULL
08/11/08 08:15:47
>>780
そんなこと確認してないで、製品を買いに行きなさい。

784:NAME IS NULL
08/11/08 13:31:14
開発者向けは数千円で売ってるんだっけ
2005や2008でも安価なの用意されてる?

785:NAME IS NULL
08/11/08 14:45:11
まったくいつまで常駐してるんだ。
URLリンク(kakaku.com)
URLリンク(kakaku.com)

786:NAME IS NULL
08/11/08 17:11:08
>>784
売ってる。
尼でも買える。

787:NAME IS NULL
08/11/08 22:41:49
VS2008でドラッグ&ドロップで作成したDBアプリ(下記URL紹介のようなもの)に
アプリケーションロールを割り当てるにはどうすればよいのでしょうか?
MSDNには、「アプリケーションが、このアプリケーションのみに対して既知である
パスワードを使用して、sp_setapprole ストアド プロシージャを実行します。」
とありますが、どこにこの情報を記述すればよいのでしょうか?

【第4回 ドラッグ&ドロップで作るWindowsデータベース・アプリケーション】
URLリンク(www.atmarkit.co.jp)


788:761
08/11/10 18:35:13
>>773
パスワードから「@」を外してみてもだめでした・・・

ADO接続文字列

Provider=SQLOLEDB.1;
Password=******;
Persist Security Info=True;
User ID=sa;
Initial Catalog=******;
Data Source=(local);
Use Procedure for Prepare=1;
Auto Translate=True;
Packet Size=4096;
Use Encryption for Data=False;
Tag with column collation when possible=False

としておりますが、如何でしょうか?



789:NAME IS NULL
08/11/10 19:21:40
>>788
SQLServer2005や2008のExress版は標準では名前付インスタンスになるのだけど
その辺は大丈夫?


790:NAME IS NULL
08/11/10 21:50:31
>>767

学習目的なの?
評価目的なら体験版やダウンロードセンターからダウンロードできる
VHDイメージ(英語版だけど)を使えば良いね。

791:NAME IS NULL
08/11/10 21:56:45
>>790
学習目的だといっている人間に対して、学習目的なの?と改めて質問をした上で
評価目的のものを勧めるのってなんでなの?
ExpressEdition使われると気にくわないの?

792:NAME IS NULL
08/11/10 22:08:06
>>788
釣りじゃないよね?

ウィザードで普通にNext>Next>でインストールすると
loalhost\SQLExpress
だよ。

793:792
08/11/10 22:10:09
間違い。
localhost\SQLExpress
だよ

794:NAME IS NULL
08/11/11 02:48:17
>>788
> Data Source=(local);

他にも書かれているけど、ExpressEditionだったらデフォルトのインスタンス名はSQLExpressだから、
Data Source=.\SQLExpress
(もしくは"Data Source=localhost\SQLExpress")
で繋がると思われ。

あとProviderだけど、SQL Server 2005だったらSQL Native Client(SQLNCLI)の方が良さそうだけど。



795:NAME IS NULL
08/11/11 18:10:05
>>789>>792>>794

インスタンス名の意味を理解してませんでした・・・
いまちょっと確認できる環境でないのですが、
後で試してみます!!!

796:なめ IS なる
08/11/12 10:13:29 GMZxs0Yi
構文エラーになってしまいます。.付近に不適切な構文があります。

CREATE UNIQUE INDEX DEVDB.D1I ON DEVDB.D1
( COMPOSITE_TYPE DESC , COMPOSITE_KEY DESC ) ;
どなたか教えて下さい m(_ _)m

797:NAME IS NULL
08/11/12 13:33:40
>>796
手元にないから確認はしてないが思いつくことを少々。

DEVDBは名前からスキーマではなくDB名と思えるので、
DEVDB.D1 は DEVDB..D1 が正しい。スキーマ名であってればそのままで。
インデックスはテーブルのDBとスキーマに常に従属するので、
DEVDB.D1I の DEVDB. は不要。



798:NAME IS NULL
08/11/12 18:25:13 MucFGzZ5
詰まってしまい、どうしても分からないことがあるので、
質問させてください。
Microsoft SQL Server 2005を使ってストアドを作っています。
動的にSQL文を作成して実行することを目的として、それはできるように
なったのですが、動的にUPDATE文を作成するとにNULLをセットして更新することが
できなくて困っています。これは可能のでしょうか?

***************
DECLARE @tbName VARCHAR(50)
DECLARE @vAC1 VARCHAR(50)
DECLARE @vSql VARCHAR(500)

SET @tbName = 'TEST01'
SET @vAC8 = 'aaaa'

SET @vSql = ' Update ' + @tbName + ' SET AC1='+''''+@vAC1+'''' +
' WHERE (ID01 = 11111) '
execute(@vSql)
***************

これを実行すると、TEST01テーブルにある列ID01の値が「11111」に一致する行の列AC1に
文字列「aaaa」で更新する、という動的SQL文はできるのですが、変数@vAC1に「NULL」を
セットして列AC1をNULLで更新したいのですが、このようなことは可能でしょうか?

可能な場合はどのような記述をすると動的にNULLで更新を行えるようになるのでしょうか?
よろしくお願いします。

単純に
SET @vAC8 = NULL
として実行しただけでは、ストアド実行ではエラーはでないものの、テーブルへの更新は
されませんでした。


799:なめ IS なる
08/11/12 18:46:55 BeyoDU5S
(T_T) ありがとうございます!
実行したところテーブル作成を確認致しました。感謝です。
ALL 権限は推奨されません。←このワーニングが出ましたが、これは無視してもよいでしょうか? 

800:NAME IS NULL
08/11/12 19:08:37
>>798
select 'foo' + NULL + 'bar'
select 'foo ' + 'NULL' + ' bar'
とかやってみると納得できるかも

801:NAME IS NULL
08/11/12 22:03:36
NULLは値じゃない


802:NAME IS NULL
08/11/12 23:34:18
ヌルヌル

803:NAME IS NULL
08/11/12 23:46:28
SET @vAC8 ='''+ null + '''
と書けば上手く行くかもしれない

804:NAME IS NULL
08/11/13 08:21:17
質問です。
SQL構文の長さにおいてはどのくらいまでという限界が設定されているのでしょうか?
以下のような感じで長いSQL文をVBAで自動生成して実行しようとしたら
エラーが出て、実行出来ませんでした。(WHERE 以下を削除するときちんと実行
出来る状況です)

SELECT * FROM tblname WHERE (A = 1) OR (A = 2) OR (A = 3) OR (A = 4) ・・・・
WHERE以下が異常に長いという、SQL文です。

異常なほど長すぎるとエラーが出るので、別の方法を考えるべきだということは
分かりますし、現在は別な方法で対処していますが、どういうところが限界なのかが
良く分からなくて質問してみました。SQL Server などに設定があるのか、それとも
別なところに限度が設定されているのか、などが気になっています。
よろしくお願いします。

805:NAME IS NULL
08/11/13 09:09:45
なんてエラーが出るのよ?
最大容量はこれじゃね?
URLリンク(msdn.microsoft.com)

806:なめ IS なる
08/11/13 10:40:43 p7L5VuAO
恐れ入ります。
CRTTBLで、指定したスキーマがないか、使用する権限がありません!
と怒られています。
スキーマは存在するので権限をMANAGEMENT STUDIO EXPRESSの画面から
該当するスキーマに与えても改善されません。
どうすればよいでしょうか?


807:なめ IS なる
08/11/13 10:46:25 p7L5VuAO

ごめんなさい、データベースを指定していませんでした。m(_ _)m

808:798
08/11/13 11:41:19 6iPQ+/Aa
>>803
ありがとうございます。
参考にして設定時にNULLをセットして更新文の方をそれに合せ以下のようにしたところ、
文字列、NULLの両方に対応した動的な更新文を作成することができました。
ありがとうございます。

**************
DECLARE @vAC1 VARCHAR(50)
DECLARE @tbName VARCHAR(50)
DECLARE @vSql VARCHAR(max)

SET @tbName ='TEST01'

SET @vAC1 = 'null' -- NULL値テスト
SET @vAC1 = '''aaaa''' -- 文字データテスト

-- 文字列のnull変数設定成功版
SET @vSql = ' Update ' + @tbName + ' SET AC1='+@vAC1+
' WHERE (ID01 = 11111) '

execute(@vSql)
**************

日付型でも同じように考えて同様にNULL、年月日の設定ができる
ようになりました。動的に全てこなすというのが初めてだったので
本当にありがとうございます。


809:NAME IS NULL
08/11/14 00:19:11 NswyuBr8
>>719
> 余談だけど、昔NiftyでやたらMSを攻撃する粘着なOracle社員もいた。しかも本名で。
池田?
ログまだ持ってるよ
捏造してまでMSに圧力かけられたって自演してたやつね

810:NAME IS NULL
08/11/14 01:01:32
>804
かなり長いクエリは実行してるけど長さが原因で動かなかったことはないんだけどなぁ。
動的にクエリを作ってるとクエリの長さよりもパラメータ数の上限が2100個にぶつかる。

無制限にパラメータを渡してくるような状況だと一時テーブル作ってサブクエリとかにする。面倒だけど。

811:NAME IS NULL
08/11/14 01:32:33
>>809
そう、池田○一w
まあ、あの当時のMSは色々あったからね。電脳曼陀羅の件とか。
でもあの粘着さは傍から見ていても異常だった。


812:NAME IS NULL
08/11/14 09:59:55 iMptzZfL
IE上からGOOGLEを使用して、 ”データベース アプローチ” を検索すると
何故かエラーで落とされるのですが仕様ですか?

813:NAME IS NULL
08/11/14 10:35:50
>>812
環境書けば?
なんともないぞ

814:NAME IS NULL
08/11/14 10:51:16
>>812
それはIEの問題だと思われる。
こちらの環境では、IE6とかだと、javascriptなどがうまく
処理できずエラーが出たり、異常終了することがあった。
これ以上のことはスレ違いなので、DB板以外の、
PC初心者やブラウザ関連の方へどうぞ

815:804
08/11/14 13:43:16
>>805>>810
レスありがとうございます。
パラメータの上限が関係しているようでした。

816:NAME IS NULL
08/11/14 14:28:28
>>814
君んとこのIEもおかしいよw
うちのIE6は文句言わずに処理してくれるぞw

817:NAME IS NULL
08/11/14 21:24:33 B/+QOJJ/
>>719
>>809
オラクルもアンチ扇動が過ぎて、すっかりネガティブ企業のイメージついちゃったし
そのためオラクル製品もそういう目で見るようになる
自業自得だな

818:NAME IS NULL
08/11/14 21:35:41
そういうのはいいから

819:NAME IS NULL
08/11/15 10:22:20
>>812
アンチウィルスソフトAVGのリンクスキャナが有効になってない?
URLリンク(blog.cori95.net)

特定の検索語句でブラウザが落ちるよ。

820:NAME IS NULL
08/11/16 03:07:38 YPc0B7k/
データベースミラーリングでご質問ですが、

アプリ(ASP.NET)から実行したトランザクションが実行中に
フェイルオーバが発生した場合、

そのトランザクションが切り替えのため、ロールバックされた事を
アプリ側で判定したいと思います。

それには、その旨のリターンコードをハンドリングするのでしょうか?。

「Failover Partner」接続句でセッションは自動的に切り替わるようですが、
トランザクションの再実行は別途仕込が必要な気がするのですが・・。




821:NAME IS NULL
08/11/16 08:34:46
例外が飛んだら無条件に1回リトライ、からやってみれば。
まずは試してみろ。話はそれからだ。

822:NAME IS NULL
08/11/17 00:41:06
そんな糞稀なことを捕まえるのか…・
大変だな…・

俺ならそういうのを補足するとか断るな
どうしてもならなんとかはするけど

823:NAME IS NULL
08/11/17 18:25:32
レプリケーションが上手くできないのですが、
非ドメイン下では簡単にはできないのでしょうか?

824:NAME IS NULL
08/11/17 23:50:16
ちょっと相談があったのでみんなに聞いてみる

SQL Server2005
Oracle9i

この2つのDBでレプリケーションを構築しようとしたときに、
相互更新可能なレプリケーションは、SQL Serverの標準でついている
機能で可能でしょうか?

また、MicrsofのMSDN以外に異種間レプリケーションの情報などが
ありませんでしょうか

825:NAME IS NULL
08/11/18 00:36:40
SQLServer2005 Standard

エージェントにて外部アプリケーションを呼び出して終了待ちしたいのですが、可能でしょうか?
可能であれば、どのような呼び出し構文になりますでしょうか?

826:NAME IS NULL
08/11/20 17:52:38
トランザクションログがいっぱいになったというエラーが出たので
トランザクションログのバックアップをしようとしたのですが
途中でディスクの空きが無くなって失敗してしまいます。
こういう場合どうしたらよいでしょうか?


827:NAME IS NULL
08/11/20 18:05:12
>>826
トランザクションログを切り捨ててもいいのなら、

BACKUP LOG データベース名 WITH TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE('データベース名')
GO

トランザクションログを切り捨てた後は、念のためにフルバックアップしておく事を推奨。


828:NAME IS NULL
08/11/20 18:09:21
>>825
ジョブのステップ追加で、[種類]を[オペレーティング システム(CmdExec)]にすれば、
外部アプリケーションを呼び出せるけど、応答待ちしないで戻ってくるの?


829:NAME IS NULL
08/11/20 18:22:01
>>827
ありがとうございます。やってみます。

830:NAME IS NULL
08/11/20 20:05:05
sqlcmd の -p オプションについて教えてください。
-p 付きで実行すると最後に、クロック タイム (ミリ秒)が表示されますが、
以下の2つの場合では 2) の方が圧倒的に早いです。

1) sqlcmd ... -Q "select * from hoge"
2) sqlcmd ... -Q "select * from hoge" > result.txt

コンソール出力などsqlcmd自身の処理も「クロックタイム」に含まれてしまっていると
思うのですが、sqlの実行時間のみを表示させるにはどうしたらいいでしょうか?

831:NAME IS NULL
08/11/20 21:33:35
>>830
全く同じクエリーなら、クエリープラン諸々がキャッシュされていると思われ。
(そうでなくても、色々なオブジェクトがキャッシュされるし)
実行時間を見るのなら、SQL Server Profilerが妥当と思う。

サーバー、もしくはクライアントでSQL Server Profileを起動しておいて、
[ファイル]-[新しいトレース]で、とりあえず使用するテンプレートは標準を選択。
クエリーの実行時間はDurationという列を参照。



832:NAME IS NULL
08/11/20 23:23:47
デバッグ中で、データの追加削除を繰り返してたので、ログが膨れ上がっています。
本番前にいったん、すべてクリアしたいと思うのですが、データベース作成直後の
クリーンな状態にするにはどうしたらいいのでしょうか?

833:NAME IS NULL
08/11/20 23:27:11
>>832
クリーンな状態ってログだけ?
だったら>>827を実行。



834:NAME IS NULL
08/11/21 10:17:27 wKzxvEHB
SQL SERVER 2005 で
C#のプログラムからトランザクションをかけてデータを更新したいと思っています。

その時、出来ればトリガが動くような構造にしたいのですが、
そのトリガは出来ればC#からトランザクションをかけてその中で動作してほしいのですがそういうことって出来ますか?

要はSQLを投げたときにトリガは動いてほしいけどロールバックした時にはそのトリガの動作は元に戻したいという都合のいい要件なのですが・・・・


835:NAME IS NULL
08/11/21 10:29:26
トリガは使わないほうがいいね

836:NAME IS NULL
08/11/21 10:45:31
>>835
ありがとうございます。
なるほど
トリガは使わずに手動でやった方がよさそうですか・・・・


それともうひとつ疑問というか、使い方がわからないので教えてほしいのですが

データの楽観的更新を行うのに今まで timestamp の列を使用していました。
このヘルプを読んでいると timestampはrowversionのシノニムであることが記述されているのですが

sql server2005のtimestamp列は行ごとに必ず一意になるものと考えていいのでしょうか?
(いわゆる 行単位でデータを持ちそれが自動でインクリメントされる)
実は今までtatimestamp列はテーブル内で一意になり 8byteの枠を超えた行数のテーブルは一意にならないのではないかと思っていたのですが・・・・



837:NAME IS NULL
08/11/21 10:52:35
いや信じるなよw

838:NAME IS NULL
08/11/21 10:57:11
>>837

え~と・・・つられた?w
まぁ、この動作が出来ないのならトリガはあきらめてPGからトランザクション内でチョイチョイとしようとは思うのですがいろいろPG内のチェック等が面倒くさくて出来ればトリガに任せたいのです
SQL投げる回数も増えますし

ストアド内から1トランザクション内でロールバックできるように処理できればそちらでもいいのですが・・・・


839:NAME IS NULL
08/11/21 22:43:21
>>831
ありがと。

840:NAME IS NULL
08/11/22 16:29:45
>>838
普通はトランザクションを開始しても、
トリガは動くし、当然、トリガの内容も含めてロールバックされると思うんだけど。
どんな手順で処理してる?

あと、timestamp の値は、timestamp 列のあるテーブルに Insert, Update される度にカウントされる、
データベースのカウンタ。データベース毎に一つで、列とかテーブル単位のカウンタじゃないよ。

841:NAME IS NULL
08/11/27 18:16:48
VB Express 2008を入れたところSQL2008EXがインストールされました。
これですとマネジメントスタジオが備わっていないので、
マネジメントスタジオがあるアドバンスを入れたところ
SqlServerConfigurationManagerに二つのサービスが出るようになってしまいました。
片方を削除したいのですが、どうすればよいでしょうか?

当然のことながら「サーバーへの接続」のサーバー名には"私のPC名¥express"と"私のPC名¥express0"の
二つがプルダウンに出てきてしまいます。

アドベンチャーワークスのサンプルを入れるときも上記サーバー名のどちらに入れるか聞かれます。


842:NAME IS NULL
08/11/27 18:51:50
自己解決しました。
普通にアプリケーションのインストールから削除操作を行えばできました。
片方を生かして削除ができました。

843:NAME IS NULL
08/11/28 18:31:03
解決しててよかった。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch