出産前後の痔にはご注意!

SQLServer2000 を使用しています。
海外拠点のSQLServer(2000)とインターネットVPN経由でDTSでデータの交換をする
ジョブを使っていました。
問題なく動作していましたが、ある日突然、失敗するようになり、
SQLServerのログインすら出来なくなってしまいました。
(PINGは通るし、名前解決も問題ありません。エクスプローラーでアクセス可能です)

不思議なことに私の端末からの接続は問題なく、動作も正常です。
そして、海外拠点のサーバーから本社のサーバーへの接続も正常です。

また、海外拠点の他のサーバーへの接続も正常です。
問題のサーバーのみ、一方通行です。(アクセスされるほうは正常)

おかしくなったあと、サーバー名でなくIPアドレスでログインしたら
接続できたのですが、しばらくたつと、IPアドレスのログインすらできなくなり、
いったい何がなんだか訳がわかりません。

エラー内容ですが、EnterpriseManagerからサーバーに接続すると下記のエラーが
でます。(その他、ジョブの実行、DTSの実行もすべてこれで失敗します)

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

海外拠点とのやりとりで夜間バッチでデータ交換ができないと
運用的に厳しくなんとか復旧したいとおもいます。

同じような境遇にあるかたいらっしゃいましたら、
情報をいただけると幸いです。

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

A 回答 (1件)

TCP/IPのポート 1433 を閉塞しているとか?



参考URL:http://support.microsoft.com/kb/287932/ja

この回答への補足

アドバイスありがとうございます。

ただ、おそらく1433ポートを閉じている場合、
相手側からのアクセスも不通になるかと思います。

しかも、Windowsファイアウォールを無効にした状態でも
症状は変わりませんでした。

補足日時:2013/07/27 22:45
    • good
    • 0

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

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

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

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

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

Q突然 Win7からのみつながらなくなった。

知り合いの事務所に頼まれ、不具合を見ることになりました。

現象としては、

 AccessADPファイルにてSQLServerにアクセスしていたのが、
 6/29(土)朝から、特定のPCのみ急にアクセスできなくなった。

というものです。以下に詳細を記します。

------- 動作PCの詳細 ------------

・稼働PC5台(内、WinXP SP3(homeとPro混在)が4台、Win7が1台)の共通設定
 
 同じワークグループに設定。それぞれのPCに同じユーザーアカウントとパスワード設定
 IPアドレスはルーターのDHCP機能で自動割り当て
 すべてウィルスバスタービジネスセキュリティーがインストール済み


・SQLServer2005 Express が稼働しているPC
 Win XP SP3 Pro(32bit)
 「簡易ファイルの共有」機能はOFF
 共有ファイルは共有の有効化、アクセス許可、セキュリティー許可をそれぞれ登録

  SQLServer は Windows認証方式
 TCP/IPおよび名前付きパイプを使用する構成。 ネットワークアクセス許可
 (TCP/IPは1433固定)SQL Browserも自動起動設定。
WindowsのファイヤーウォールにSQLSrver、TCP1433 UDP1434 例外登録 
 SQLServer ManagementStudio Expressで
 ログインユーザーとデータベースアクセス許可を、ビルトイングループ単位で与えてある
Hostsファイルの値は 「127.0.0.1」

・問題のPC
Win7 SP1 Pro(64bit)
Office 2010Pro(32bit版をインストール)
ワークグループ設定。ホームワークの設定はせず、社内ネットワークプロファイルで構成
 共有の有効化。
Hostsファイルの値が 
  # 127.0.0.1
になっていたので、#を取り除き上書き保存。

--------------------- 

調べてみたところ、問題のPC以外からは問題なくつながり、読み込み書き込み共にOKでした。
Administoratorでなくても、User権限の人でも問題なくつながります。

しかし、Win7マシンからだけなぜか急につながらなくなったとの事です。 
特定のユーザーではなく、特定のPCだけの現象です。ユーザーを変えてみても、
問題のPCからだけ、なぜかつながりません。
ADPファイルを新規作成し、サーバーに接続する段階ではサーバー名が出るものの、
 「信頼関係が…」うんぬん言われてつながりませんでした。

各PCのファイヤーウォールやWindowsDefenderをOFFにしてもダメでした。

そこで管理ツールのODBCでやってみたところ、次のようなメッセージが出ました。
 (ODBCは32bit版、64bit版共に試しました。)

----------------------------------------------
接続できませんでした。 ;
SQLState: '28000'
SQL Server エラー: 18452
[Microsoft][ODBC SQL Server Driver][SQL Server]ユーザー '' は
ログインできませんでした。このユーザーは SQL Srver の信頼関係
接続と関連付けられていません。
-----------------------------------------------

不思議なのは、表示のユーザーのところが '' になっている事です。
通常ここのところには 'マシン名\ユーザー名' のような形で表示されると思うのですが…。

また、違うユーザーで同じ事をしてみたところ、今度は、ユーザー名のところに
意味不明な数字の羅列が表示されていました。
 (あとから思えば、SIDを表示してたのかもしれません。)


そこで、そもそもファイルの共有事自体は出来るのか、試してみました。
結果、こちらにも問題がありました。
他のPCから問題のPCの共有フォルダへのアクセスはOKなのですが、
問題のPCから他のPCの共有フォルダを開こうとすると、
 「ユーザー名」「パスワード」
を聞いてくるダイアログが表示され、入力しても入れないPCがありました。

因みに、入れないPCの「簡易ファイルの共有」をONにすると問題なく入れますが、
これは単にGuest扱いを受けているだけだと思います。
   


以上からの推測ですが、SQLServerの稼働しているPCが問題のPCを正しく評価できない為に、
ユーザーが'(null)'のような形になっているのではないかとおもいました。

それで、ユーザー認証周りを見直し、グル―プだけでなく、ユーザー単位でもアクセス許可を設定
したり、新たにユーザーを作成したりして見たのですが、やはり問題のPCのみつながりません。

ファイルの共有に関しても、新たに共有設定をしてみたのですが、やはり問題のPCのみつながりません。

SQLServerの問題というよりも、PC自体の問題のように見えます。


正直なところ、Windows7はあまり使ったことがない為、行き詰まってしまいました。

素人考えでは、問題のマシン名とユーザー名が正しく正しく伝わっていない事が原因だと思うのです。
そもそも、なぜそのような事態になったのかがわからず、困っています。
「昨日までは問題なく使えていた」との事で、思い当たる節がありません。

担当していた人が退職された為、代わりに見ているのですが、
正直再インストールの方が早いのではとすら思ってしまいます。



ほかに何か見落としているところがないでしょうか。
また、対処法のヒントとなる事がありましたら教えて頂きたいと思います。

よろしくお願いします。

知り合いの事務所に頼まれ、不具合を見ることになりました。

現象としては、

 AccessADPファイルにてSQLServerにアクセスしていたのが、
 6/29(土)朝から、特定のPCのみ急にアクセスできなくなった。

というものです。以下に詳細を記します。

------- 動作PCの詳細 ------------

・稼働PC5台(内、WinXP SP3(homeとPro混在)が4台、Win7が1台)の共通設定
 
 同じワークグループに設定。それぞれのPCに同じユーザーアカウントとパスワード設定
 IPアドレスはルーターのDHCP機能で自動割り当て
 す...続きを読む

Aベストアンサー

こんにちわ。
Windows認証方式ということで、前提として、問題のWin7PCのWindowsログインユーザーがSQLServer2005 Express が稼働しているPCに適切な権限のグループ(Administrator等)に登録されているかどうかご確認されましたでしょうか?
切り分けとして、一時的にデータベースの認証方式をSQLServer認証との混合方式にして接続が可能であれば、Windows認証の問題と言えるのではないでしょうか。
それでWindows認証の問題となった場合にWin7PCとSQLServer2005 Express が稼働しているPCとのユーーザー登録状況を記載されると問題の有無が判断できる情報になるかと思います。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Q既定のインスタンスと名前付きインスタンス

Microsoft SQL Server 2012 をインストールしたいのですが、
既定のインスタンスと名前付きインスタンスのどちらを選べばいいのでしょうか?
SQLサーバーは初心者です。

Aベストアンサー

SQL Server は同一マシン上にいくつもインストールすることができる。
SQL Server は DB を管理するサービス (DBMS) なので、同一マシンに複数インストールすれば、同一マシンで複数の DBMS が稼動することになる。
1つめの DBMS で管理されている DB-A という DB があったとして、さらに 2つ目の DBMS にも DB-A という DB があったとしても、1つ目の DBMS で管理している DB-A と 2つ目の DBMS で管理している DB-A は別物である。

これは Windows のフォルダーで考えればわかりやすい。
1つのマシン上には複数のドライブ (C とか D とか) をマウントできる。
各ドライブには当然ながらフォルダーがあるが、C:\hoge と D:\hoge という 2つの同じ名前のフォルダーはドライブが違うので別物である。

で、本題。
同一マシン上に複数の DBMS をインストールする場合、それぞれの DBMS のインスタンスに名前をつけて区別する。
ただし 1つの DBMS しか稼動させない場合は名前をつける必要がない。これを 「既定のインスタンス」 と呼ぶ。
既定のインスタンスが稼動しているマシンに 2つ目の DBMS をインストールする場合、すでに稼動している既定のインスタンスと区別するために何か名前をつける必要がある。これが 「名前付きインスタンス」 である。

ただし DBMS を 1つしか稼動させない場合でも、何が何でも既定のインスタンスにしなくてはならないわけじゃなく、名前をつけてやってもかまわない。

例外として、SQL Server の無償版である Express Edition は、通常は名前付きインスタンスとしてインストールされる。
名前付きインスタンスを指定せずにインストールした場合は、既定の名前付きインスタンスである SQLExpress が使用される。

SQL Server は同一マシン上にいくつもインストールすることができる。
SQL Server は DB を管理するサービス (DBMS) なので、同一マシンに複数インストールすれば、同一マシンで複数の DBMS が稼動することになる。
1つめの DBMS で管理されている DB-A という DB があったとして、さらに 2つ目の DBMS にも DB-A という DB があったとしても、1つ目の DBMS で管理している DB-A と 2つ目の DBMS で管理している DB-A は別物である。

これは Windows のフォルダーで考えればわかりやすい。
1つのマシン上には複数...続きを読む

QSQLServer2012の復元ができない

いつも楽しく勉強させていただいております。

環境はSQLServer2012のExpressでOSはWindowsServer2008です。

Test1というデータベースのバックアップを取ってTest2という名前で復元しようとしましたが、なぜか失敗してしまいます。
どなたか原因を教えていただけませんか。

次の手順でバックアップを取り、復元をしています。


○バックアップのフェーズ

1.データベースのバックアップのダイアログボックスを開く。
2.ソースにTest1、バックアップの種類に完全を指定する。
3.バックアップ先は以下のファイルに

 C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Backup\Test1.bak

4.OKをクリックし、「データベース'Test1'のバックアップが正常に完了しました」を確認。

○復元のフェーズ

5.データベースの復元のダイアログボックスを開く。
6.ソースはデバイスにする。
7.ファイル名に上記3.のファイル名を指定
8.転送先データベースはTest2とする。
9.OKをクリック(ここでエラーとなる)。

エラーメッセージは以下の通りです。

------------------------------------------
データベース'Test2'の復元に失敗しました。(Microsoft.SqlServer.Mangement.RelationalEngineTasks)
追加情報:

System.Data.SqlClient.SQLError:ファイル'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Test1.mdf'に上書きできません。
データベースTest1が使用中です。(Microsoft.SqlServer.SmoExtended)
------------------------------------------

メッセージの内容で引っかかるのはTest1.mdfに上書きできませんというところです。
上書きでなくTest2という新規データベースに書き込みたいのですが。

ためしにTest2というデータベースを作成しておいて「既存のデータベースに上書きする」をチェックしてやってみましたが、やはり失敗。
メッセージは上と同じです。
SQLServerを再起動して試してもやはり結果は同じです。

何が悪いのでしょう。

いつも楽しく勉強させていただいております。

環境はSQLServer2012のExpressでOSはWindowsServer2008です。

Test1というデータベースのバックアップを取ってTest2という名前で復元しようとしましたが、なぜか失敗してしまいます。
どなたか原因を教えていただけませんか。

次の手順でバックアップを取り、復元をしています。


○バックアップのフェーズ

1.データベースのバックアップのダイアログボックスを開く。
2.ソースにTest1、バックアップの種類に完全を指定する。
3.バックアップ先は以下のファイルに...続きを読む

Aベストアンサー

復元時にデータファイルとログファイルの格納先を指定して変更する必要があります。

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& ")"
の様に書きます。

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

Q社内PCにてネットワークの見れないPCがある

どうも。 お付き合いできる方が居られれば、知恵をお貸しください。
社内PCでネットワークが見れないPCが何台かあります。
しかも、そのPCごとに内容は違いAのPCはBが見れない…しかし、逆からは見れるとか。
CのPCは、Dが見れない…Cも見れないとか。
セキュリティソフトのファイヤーウォールは切ったり、Win内のファイヤーウォールは切ってもダメです。
で、中には『PCを検索』でIPで探して見ると共有が見れたりするPCもあります。
更には、Adminだとダメでもうひとつアカウント作ってそれでやると見れるとか…(・д・;)
もはや、意味が分かりません。
OSが違えば(XP→98:98→2000)また違う設定が要るんでしょうが、XP→XPでも見れないやつがあるのが解せません。
ちなみに、PINGは飛びます。
ネット、メールも出来ます。
が、特定のPCが見れないんです。
何か原因が考えられるのであれば、是非知恵をお貸しください。
長文、申し訳ありませんでした。

Aベストアンサー

これは、マスタブラウザになるべきマシンが固定していない環境で起こる現象です。
下のURLのNo.2net_lander(私)の回答を参考にしてください。
環境は、少し異なると思いますので、適宜読み替えてください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1127123

Q以降、以前はその値を含む?含まない?

以降、以前というのはその値そのものをふくむのでしょうか?
より後、より前は含まないと言うのはわかります。
たとえば
「4月13日以降の最初の日曜日」
とあったときに、4月13日が日曜日だった場合は4月13日が該当の日となるのでしょうか?それとも4月20日が該当の日でしょうか?

Aベストアンサー

「4月13日以降の最初の日曜日」
4月13日が日曜であった時、4月13日が「4月13日以降の最初の日曜日」となります。

「以降」、「以前」という言葉は「~を以って」と言うように、
前の言葉を条件に含みます。

Q複数フィールドの条件について

SQL文について教えてください。

oracle,mysqlでは、下記の条件分
where (fieldA,fieldB) in (select fieldA,fieldB from TABLE_NAME)
と言った条件を記載可能なのですが、SQLServer
ではエラーになってしまいます。
違った構文があるのでしょうか?よろしくお願いします。

具体的にやっているSQLは
update TABLE_NAME set FIELD_NAME='1' where (FIELDA,FIELDB) in (select FIELDA,FIELDB from TABLE_NAME2 where FIELDC='1')

Aベストアンサー

>複数列のinを使いたいのですが、SQLServer
>には無いのでしょうか?

「(列1,列2) in(値1,値2)」という条件は、行値式または行値構成子と呼ばれますが、SQL Serverでは未サポートだったと思います。

副問い合わせのin条件は、existsで等価に表現できます。

updateでのSQL例は、下記のようになります。
SQL Serverでは、「update 表名」のすぐ後ろには別名は書けず、updateでも「from 表名 as 別名」と書く方式になっているようです。

update TABLE_NAME
set FIELD_NAME='1'
from TABLE_NAME as x
where exists(select * from TABLE_NAME2 as y
where x.FIELDA=y.FIELDA and x.FIELDB=y.FIELDB
and y.FIELDC='1')

QSQLserverのIF文について

どうしてもIF文がうまくいきません
IF文の中にIFを入れ子していますそのIFが複数の条件があります
今までACCESSではELSEIFで条件をいくらでも指定できたのですがSQLの場合はエラーになってしまいます
ご教授おねがいします
------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[scfc_part端数処理]
( @PTHASU nvarchar(10), @haken nvarchar(10) )
RETURNS
real
AS
BEGIN
DECLARE @PARTT real
DECLARE @PARTT_H real

if (not(@PTHASU is null))
if @haken='派遣' or @haken='臨時'
if substring(@PTHASU,4,2)>= 50
SET @PARTT = convert(int,LEFT(@PTHASU,2)+1)*60
--ここをいれるとエラー IF substring(@PTHASU,4,2)< 50 and substring(@PTHASU,4,2)>= 20
--ここをいれるとエラー SET @PARTT = convert(int,LEFT(@PTHASU,2)*60 +30
--ここをいれるとエラー if substring(@PTHASU,4,2)< 20
--ここをいれるとエラー SET @PARTT = convert(int,LEFT(@PTHASU,2)*60
ELSE
SET @PARTT = convert(real,LEFT(@PTHASU,2))*60 + convert(real,substring(@PTHASU,4,2))*1

ELSE
SET @PARTT= 0

SET @PARTT_H = convert(real,(floor(@PARTT/60*10000)/10000))

RETURN @PARTT_H

END

どうしてもIF文がうまくいきません
IF文の中にIFを入れ子していますそのIFが複数の条件があります
今までACCESSではELSEIFで条件をいくらでも指定できたのですがSQLの場合はエラーになってしまいます
ご教授おねがいします
------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[scfc_part端数処理]
( @PTHASU nvarchar(10), @haken nvarchar(10) )
RETURNS
real
AS
BEGIN
DECLARE @PARTT real
DECLARE @PARTT_H real

if (not(@PTHASU is...続きを読む

Aベストアンサー

マニュアルを読みましょう。

if 条件
真の時の命令文
else
偽の時の命令文

で、真または偽で命令文を2個以上書く場合は、begin~endでブロックを構成する必要があります。

参考URL:http://msdn2.microsoft.com/ja-jp/library/ms182717.aspx


人気Q&Aランキング