忍者ブログ
開発中に遭遇した落とし穴や忘れそうな事柄を書いた個人メモ
カレンダー
06 2025/07 08
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
フリーエリア
最新コメント
[02/03 NONAME]
最新トラックバック
プロフィール
HN:
No Name Ninja
性別:
非公開
バーコード
ブログ内検索
アクセス解析
06
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 SQL Server 2008 Expressは、デフォルトでは、ネットワーク接続はできない設定になっている
そこで、ネットワーク接続の手順を説明します。

ネットワーク経由で接続する場合、大きく3つの関所がある
1.SQLServer自身のネットワークアクセス許可
2.コンピュータのファイアウオールの許可
3.データベースのユーザーアクセス許可

ここでは、主に1.2.のことを説明する
3.は、ややこしいので、SQLServer認証モードを使用する

1.SQLServer自身のネットワークアクセス許可
・SQL Server Management Studioを開く
   対象接続サーバーのプロパティを参照
ページ選択から「接続」を選択する
  右側の「リモートサーバー接続」で、「このサーバーへのリモート接続を許可する」がチェックされているか確認する(してなければ、チェックしてね)
・SQL Server構成マネージャを開く
[SQL Serverネットワーク構成]-[SQL EXPRESSのプロトコル]-[TCP/IP]をダブルクリックする
[プロトコル]タブの[有効]を[はい]に変更する
  一度、SQLServerを再起動する
  [SQL Serverのサービス]-[SQL Browser]をダブルクリックして、[サービス]タブの[開始モード]を[自動]に変更する
変更が完了したら、[SQL Server Browser]のサービスを起動する
以降、コンピュータ起動時にこのサービスも起動することになる

SQL Browserに関しては、iron.3rin.net/Entry/18/


2.コンピュータのファイアウオールの許可(ファイアウォール無効であればとくに設定は必要ありません)
・Windowsファイアウォールを起動
SQL Browserが使用するUDP1434をあける
SQLServerのプログラムの追加をして、SQLServerが使用するポートの使用を許可する
   C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\selserv.exe

3.データベースのユーザーアクセス許可
・SQL Server Management Studioを開く
   対象接続サーバーのプロパティを参照
ページ選択から「セキュリティ」を選択して、サーバー認証を「SQL Server認証モードとWindows認証モード」 に変更する
  [サーバー]-[セキュリティ]-[ログイン]-[sa]をダブルクリック。ページ選択[状態]を選択、ログインを[有効]にする
(saをつかわないんだったら、SQLServer認証のできる他のユーザーを作ってね)


参考
http://awoni.net/fc/remote/   
ここをみれば、もっとわかりやすく説明しています
上の説明は必要ないかも


拍手

PR
SQL Server Browserは、SQL2005から実装されたサービスで、対象サーバーに複数のSQLインスタンスが導入されている場合、クライアントからの接続ポートを受け渡しを行っているものです

実際には、SQLインスタンスが一つであれば必要ないもので、通常、デフォルトではSQLServerは、1433を使用しているので、TCPを有効にしておいて、1433のポートをあけておけば、外部クライアントからも接続できる
ただし、名前参照ができないため、クライアント側からサーチしても名前参照できません。

通常、複数インスタンスを取り扱う場合、SQLServerのポートは、動的ポートで取り扱うみたい
そのため、UDP1434で受信待ちして、クライアントの要求がくれば、SQLServerのポートを
教えてくれて、クライアントはそちらに接続するってあんばい。
ただ、このとき紹介されたポートがあいてなければ接続できないですけど。。。
もしくは、実行サービスでファイアウォール登録するれば、動的ポートでも問題ないと思います。
SQL2008Expressの場合、
C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe

上記の方法をとれば、単一でも複数のインスタンスでも対応できるかと思います

参考
msdn.microsoft.com/ja-jp/library/ms181087.aspx
ここをみればもっと詳しく書いてます

拍手


@Overrideをつけると「スーパークラスのメソッドをオーバーライドする必要があります」エラー
なるのは、JDK1.5以前では、インターフェース宣言メソッドに関しては、@Overrideをつけると
エラーになっていたようで、JDK1.6以降は@Overrideをつけてもエラーにはならなくなったようで
JAVAの仕様がかわったことに起因する

まあ、@Overrideをコメントアウトしても解決するのだが、きもちわるいので
以下の方法で解決

eclipseを使用している場合[ウィンドウ]-[設定]のJava-コンパイラのJDK準拠を1.6にすることで
このエラーは解消するが、これで解決しない場合、対象プロジェクトでのみ1.5以前のコンパイラ
を選択している場合がある(ここではまりました)。
上記の同設定画面のJDK準拠の上にある「プロジェクト固有の設定の構成」をクリックすると
プロジェクトを個別に選択できるので、対象プロジェクトをダブルクリックすると、
プロジェクト個別のJAVAコンパイラが選択できる。

どうも、全体設定は、個別設定には反映されないようで(まあ、しゃないでしょう)、注意が必要かも

拍手

Windowsサービスプログラム上で、.NETのアプリケーション実行することができるが、
レガシCOMを.NETアプリケーションが利用している場合、注意が必要なもよう

レガシCOMをロード中に、例外処理が発生する
ただし、通常のアプリケーションとして起動して動作させる場合正常に動作する

原因としてわかったのは、.NET COM Interopのアセンブル登録を行う必要があったようで
InstallShieldでは、.NET COM Interropプロパティを「はい」にすることで
.NETアセンブリを呼び出せるレジストリエントリがターゲットシステムに作成されるようです


通常アプリケーションでは、動作していたため、
はまってしまった 

おそらく、通常アプリとサービスでは、レガシCOMのアプローチ方法が異なるみたい
 

拍手

 1.3からIIS上での実装方法変更のため、接続文字列の取得方法を変更する必要がある
いままでは、各ロールのOnStartで記載していたが、これをGlobal.asaxのApplication_Startに
記述する必要がある

尚、ストレージのテーブル初期化などいままで、各ロールのOnRun等に記載していたが
いままは、Applicaton_Startに移動させました(これがベストかどうかは別だが)

参考資料
http://tatsuakisakai.net/?p=126

拍手

Copyright c 技術メモ All Rights Reserved
Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
忍者ブログ / [PR]