データベースソフトMSDEを使用して、業務アプリを作成使用としています。
いままで、スタンドアロンのシステムでは使用したことがあるのですが、データベースサーバ+クライアントのような使い方ができるのかよくわかりません。
Microsoftのサイトで調べてみたところ、「同時接続ユーザーは5人以下と想定されています」と書いてあるのですが、これは、5クライアントまで接続してよいと解釈してよいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

> 5クライアントまで接続してよいと


> 解釈してよいのでしょうか?
違います。文字通り「想定されている」だけです。

具体的にどういう事かと言うと、

Windows Workstation(2000ProやXPProなど)がフォルダ共有する時、10セッションを超えた接続はいきなりはじかれる(共有を見にいこうとするのが門前払いを食らう)。
これに対し、MSDEには5同時接続以上を行っても特には何も起こらない。普通に接続やデータのやりとりができる。また、混合認証を使ってSQL Serverユーザを使うと、5を超える同時接続にもライセンス上の問題はない(CALが要らない)。

ではMicrosoftが5だ5だとうるさく言っているのは何か。これは、6同時接続、特に10同時接続以上になると、動作が極端に遅くなるのだ(我慢できないほどではない)。

ちなみに、5「同時接続」とはどういう事かと言うと、接続ユーザ数ではなく、例えば1人が1システムで2つのSQL Serverコネクションをはるとそれは2接続になる。
例えば、Accessを用いてSQL Serverをバックエンドに使ったは良いが、Accessプロジェクトを知らないためにテーブルをODBCリンクで見に行って、かつVBAの中でADOを使ってSQL Serverを操作する、というようなシステムがあるとそうなる。ODBC経由とADO経由で1つのシステムでも2接続になってしまう。信じられないだろうがこんなシステムも世の中には実在する。

まとめると、
・5クライアントまで接続して良いのではなく、何クライアントでも接続して良い
・でも、5クライアントくらいのシステムまでにしといた方が良いよby Microsoft
・繋ぐのにSQL Server CALは不要
ここから下はあまり知られていないけど要注意
・MSDEをインストールしてよそのパソコンから繋ぐには、Windows 2000 ServerまたはWindows Server 2003じゃないといけない(Windows WorkstationにMSDEを入れて他のパソコンからつっつくのは、Windows OSのライセンスに違反する)
・MSDEで認証モードに関わらずWindows統合認証を使う場合はWindows Server CALが必要
となります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やっぱり、MSDEでは複数台使用してはいけないのですね。

>ここから下はあまり知られていないけど要注意
ここが大事なとこなのに、あまり知られてないってのがコワイですね。

お礼日時:2005/04/20 14:59

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1127154


> Microsoftのサイトで調べてみたところ、「同時接続ユーザーは5人以下と想定されています」と書いてあるのですが

何処ですか?

> ・MSDEで認証モードに関わらずWindows統合認証を使う場合はWindows Server CALが必要

Server2003なら、SQL認証でもWindows Server CALが必要
    • good
    • 0
この回答へのお礼

ありがとうございます。
前にも、同じような質問あったんですね。
一応「教えてgoo」内を検索はしたんですが、みつけられませんでした。
やはり、Windows Server CALが必要なのですね。

>何処ですか?
ココです↓

MSDEの制限事項
http://www.microsoft.com/japan/msdn/vstudio/msde …

お礼日時:2005/04/20 15:04

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q最大アクセス数

DBのアクセス数ですが、限界値を設定するようなところはありますか?
また、動作に影響がでるのはどのくらいのアクセス数から考慮すればよいのでしょうか?

Aベストアンサー

いわゆる同時接続数は、インスタンスのプロパティの「接続」タブで設定可能です。
(サービス再起動が必要)
既定値は0ですが、SQL Serverでの最大値は32,767ですので、0の場合はそれ以内でメモリなどの実装状況によりSQL Server自体が動的に決定することになります。

接続数に関してはメモリ実装状況により一概には言えないと思います。
以下のリンクが参考になると思います。
http://www.atmarkit.co.jp/fdb/rensai/drk03/drk03_1.html

1接続あたり28KBのメモリが必要になりますが、このメモリが確保されるのは「memory to reserve」領域になります。この領域は大きなクエリの一部も使いますし、それ以外の領域と合計して実装しているメモリが足りているかどうかが最終的な判断基準になります。

ただ、よほどのクリティカルなシステムでない限り、システム自動設定になっているパラメータを設定するのは避けた方がよいと思います。

参考URL:http://msdn.microsoft.com/ja-jp/library/ms187882(SQL.90).aspx

いわゆる同時接続数は、インスタンスのプロパティの「接続」タブで設定可能です。
(サービス再起動が必要)
既定値は0ですが、SQL Serverでの最大値は32,767ですので、0の場合はそれ以内でメモリなどの実装状況によりSQL Server自体が動的に決定することになります。

接続数に関してはメモリ実装状況により一概には言えないと思います。
以下のリンクが参考になると思います。
http://www.atmarkit.co.jp/fdb/rensai/drk03/drk03_1.html

1接続あたり28KBのメモリが必要になりますが、このメモリが確保...続きを読む

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QACCESSに同時アクセス(編集)をしたい

教えてください。
ACCESSのDBに複数のユーザが同時にアクセスして、
データを追加・編集したいのですが、
やはり、不可能でしょうか?

Aベストアンサー

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」

というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを
選択します。

こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと
呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された
データをdb2で編集することができます。

db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。
リンクテーブルに対してできないことはテーブル構造の変更くらいで
他のことはだいたいできると思っていいかと思います。

このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ
から同時に同じアクセスデータベースにアクセスすることは可能かと思います。

このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって
いた頃は、特段支障もなく業務を行なうことができました。問題は、これを
読んだ他の誰かが指摘してくださるかと思います。

同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい
ことになります。これを回避するためには、db2にワークテーブルを備えておき、
リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに
リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを
リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが
よいかと思います。私はそのようにしていました。

他に、ADOを使う方法などもあります。方法はいくつかありますから、
少し研究してみるといいですよ。(^-^)

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」
...続きを読む

Qwindows10の同時接続数

こんにちは。

掲題の件を調べていますが情報がでてきません。

@マークITのサイトでもwindows7までの情報しかでてきません。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1349maxusr/maxusr.html

もしどこかに公式の情報等がございましたら教えていただけませんでしょうか?

よろしくお願いします。

Aベストアンサー

Windows 10 の使用許諾を読めばいいと思います。

Windows 10 の使用許諾
http://www.microsoft.com/en-us/Useterms/Retail/Windows/10/UseTerms_Retail_Windows_10_Japanese.htm
[2. インストールおよび使用権]-[d. 複数使用のシナリオ]-[iii デバイスの接続] によると「最大 20台の他のデバイスからの接続を許可することができる」とあります。

先の@IT の例で 1台の PC を 1ユーザーとして書かれていますが、ざっくり言えばそんなもんでしょう。
今までのクライアント用 Windows OS の最大接続数は 10 とか 20 でしたので、ここにきて Windows 10 での接続数を増やすとは思えません。

上記は技術的な制限事項ではなく法的な制限内容ですので破らないようにしたほうが無難でしょう。

Qフォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?

フォームのテキストボックスなどの変数を標準モジュールの関数から参照する方法を教えてください。
お願いします。

Aベストアンサー

>test(form1.Text1.Text)
>
>Public Function test(コントロール変数パラメータ)
>
>コントロール変数パラメータ=値を代入
>
>End Fuction
可能ですよ。サンプルです。試してみてください。

まず、フォームと標準モジュールを準備してください。
フォーム:
Form[Form1]にTextbox[Text1]とCommandButton[Command1]を配置してください。
([]内は、オブジェクト名です。)
Private Sub Command1_Click()
  Call test(Text1)
End Sub

標準モジュール:
Public Function test(txt As TextBox)
  txt.Text = "aaa"
End Function

CommandButtonを押すと、Textboxに”aaa”と表示されます。

※Public Function test(txt As ****)の****は、
「Textbox」又は「Object」又は「Control」 いずれでもOKです。
例:
Public Function test(txt As Textbox)
Public Function test(txt As Object)
Public Function test(txt As Control)
この辺りは、人それぞれになると思いますが・・・。

>test(form1.Text1.Text)
>
>Public Function test(コントロール変数パラメータ)
>
>コントロール変数パラメータ=値を代入
>
>End Fuction
可能ですよ。サンプルです。試してみてください。

まず、フォームと標準モジュールを準備してください。
フォーム:
Form[Form1]にTextbox[Text1]とCommandButton[Command1]を配置してください。
([]内は、オブジェクト名です。)
Private Sub Command1_Click()
  Call test(Text1)
End Sub

標準モジュール:
Public Function test(txt As TextB...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QIDENTITY列の番号リセット

SQLServerで、Identity属性を使用して自動的に番号をセットしている項目があります。
この採番を1からやり直したいのですが、TRUNCATE TABLEコマンドを使用してレコードを空にしても、カウンタがリセットされません。

何かいい方法はありますか?

Aベストアンサー

DBCC CHECKIDENT (tablename ,RESEED ,0)
にて変更可能です。
0の部分を戻したい値に変更する事も可能です。

QSQL Server時間切れについて

初めまして。SQL初心者です。
あるシステムにおいて、SQLサーバが無応答?になり、システムがダウンしてしまい、困っています。

Windows2000Server、SQL Server2000、VB6を用いてDBに定期的にRead&Write、及び各種のデータ表示を行っています。
ADOを使用して、接続や各コマンドを実行しているのですが、ごくたまに以下のエラーが出てしまいます。
Code:-2147217871,Description:時間切れになりました。Source:Microsoft OLE DB Provider for SQL Server,SQL State:HYT00,NativeError:0
過去ログや他サイトを調べた結果、コネクションのCommandTimeoutの秒数を延長させる、とあったので60秒に変更しました。
が、不定期(大体1週間~10日前後で夜中や朝方などにもあり)にこのエラーが出てしまい、約1時間~1時間半もダウンしています(この間のエラーをOn Errorではじいてログファイルに保存しています)。
毎分必ず実行しているストアド(20装置分のデータをUPDATEするので1分に20回実行する)があるのですが、必ずと言っていいほどこのストアド実行中に落ちています。
このストアドに5~6個のパラメータを渡し、複数のテーブルに対してUPDATE処理を行っています。
正常に動作している時は、数日間全く問題無いので、ストアドやVBのコードに間違いは無いと思います。

そこで、SQL Serverの設定等を見直したところ、1つ気になったところが。データベースファイル
\Microsoft SQL Server\MSSQL\Data\aaa.MDF
のサイズが14Gになっていました・・・。
このファイルにアクセスする時にSQL Serverで高負荷になってしまい、無応答のような状態になってしまうのでは?と思っていますがどうでしょう?

不定期に発生し、かつ再現性が無く、原因が掴めずに本当に困っています。
先輩方、何でも良いのでアドバイスをお願い致します。

初めまして。SQL初心者です。
あるシステムにおいて、SQLサーバが無応答?になり、システムがダウンしてしまい、困っています。

Windows2000Server、SQL Server2000、VB6を用いてDBに定期的にRead&Write、及び各種のデータ表示を行っています。
ADOを使用して、接続や各コマンドを実行しているのですが、ごくたまに以下のエラーが出てしまいます。
Code:-2147217871,Description:時間切れになりました。Source:Microsoft OLE DB Provider for SQL Server,SQL State:HYT00,NativeError:0
過去ログや他サイ...続きを読む

Aベストアンサー

14Gですか・・・大きいですね。
データの構造がどうなのか解らないので、
容量的に妥当かどうかはわかりませんが、
一度インデックスの再構築と圧縮を掛けてはどうでしょうか


CREATE PROCEDURE SP_COMPRESS AS

DECLARE @name varchar(30)

DECLARE tnames_cursor CURSOR FOR
SELECT name FROM sysobjects
WHERE type = 'U'
OPEN tnames_cursor

FETCH NEXT FROM tnames_cursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
PRINT @name + 'のDBREINDEX...'
EXEC ('DBCC DBREINDEX ('+ @name + ')' )
FETCH NEXT FROM tnames_cursor INTO @name
END
DEALLOCATE tnames_cursor

dbcc SHRINKFILE("SampleDb_Log",1)
DBCC SHRINKDATABASE("SampleDb",1)
GO


データベース名は自分の環境に合わせてください。
また、バックアップは必ず取っておいてください。
14Gもあれば結構時間がかかると思いますが・・・

とりあえず参考程度に・・・

14Gですか・・・大きいですね。
データの構造がどうなのか解らないので、
容量的に妥当かどうかはわかりませんが、
一度インデックスの再構築と圧縮を掛けてはどうでしょうか


CREATE PROCEDURE SP_COMPRESS AS

DECLARE @name varchar(30)

DECLARE tnames_cursor CURSOR FOR
SELECT name FROM sysobjects
WHERE type = 'U'
OPEN tnames_cursor

FETCH NEXT FROM tnames_cursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
PRINT @name + 'のDBREINDEX...'
EXEC ('DBCC DBREINDEX (...続きを読む

QSQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
 (ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)

根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問...続きを読む

Aベストアンサー

Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。照合順序については参考URLをご覧下さい。

SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。

このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。

参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx

QSELECT文でタイムアウトが起こります。

いつも勉強させて頂いております。どうぞよろしくお願いします。

以下の環境で開発を行っています。
SQLServer2005
ASP.NET C#

.NETのソースで
1つのクラスに2つのクエリ(2つともSELECT←複数テーブルを結合している)を呼び出す処理を書いています。(トランザクション処理は付けていません)2クエリとも検索対象テーブルは60万件程度のデータを保持しています。検索条件によって処理速度は違うのですが、1ユーザが最も遅い検索条件で検索をしてもタイムアウトにはなりません。しかし、2ユーザが同じタイミングで検索(どのような条件でも)処理を行うと、タイムアウトを起こしてしまいます。まれにデッドロックも起こります。

SQLServerではSelectのたびにlockがかかるのでSQL文中に「WITH(NOLOCK)」を記述するように書かれているサイトを見つけたのですが、他ユーザからの更新もあり得るテーブルなので、他の方法を探しております。
トランザクション分離レベルは規定値です。

是非、どなたかご教授ください。よろしくお願いします。

いつも勉強させて頂いております。どうぞよろしくお願いします。

以下の環境で開発を行っています。
SQLServer2005
ASP.NET C#

.NETのソースで
1つのクラスに2つのクエリ(2つともSELECT←複数テーブルを結合している)を呼び出す処理を書いています。(トランザクション処理は付けていません)2クエリとも検索対象テーブルは60万件程度のデータを保持しています。検索条件によって処理速度は違うのですが、1ユーザが最も遅い検索条件で検索をしてもタイムアウトにはなりません。しかし、2ユーザが同じタイミ...続きを読む

Aベストアンサー

2ユーザともタイムアウトになるのですか?
タイムアウトがハードウェアのリソースやコネクションの競合などではなくて、テーブルロックにより発生しているという結論はどうやって導き出しましたか?
READ COMITTEDのロックヒントなしのSELECT同士でブロッキングやデッドロックが発生するパターンが思い当たらないので。

NOLOCKをつけたらタイムアウトしなくなるか試してみるのがいいと思います。
で、本当にロックが原因で、ダーティリードは避けたいとなると、参照処理ということを踏まえてスナップショット分離レベルを使うくらいかと思います。


人気Q&Aランキング

おすすめ情報