9

これは、SQL Server 2012 Express に接続するために使用しているコードです。私のファイルの名前はConnect.rb.

require "rubygems"
require "tiny_tds"
client = TinyTds::Client.new(
                    :username => 'sa',
                    :password => 'sapassword',
                    :dataserver => 'localhost\SQLEXPRESS',
                    :database => 'ContactsDB')
result = client.execute("SELECT * FROM [Contacts]") 

コードを実行すると、次のエラーが発生します。

'execute' で : Connect.rb からのクローズされた接続 (TinyTds::Error) : 'main' で

上記のコードを次のコードに置き換えると、

client = TinyTds::Client.new(
                    :username => 'sa',
                    :password => 'sapassword',
                    :host => 'localhost',
                    :port => 1433,
                    :database => 'ContactsDB')

次のエラーが表示されます。

in 'connect': 接続できません: Adaptive Server が利用できないか、存在しません

このエラーの原因と修正方法を教えてください。

4

4 に答える 4

3

構成は問題ないようです。dataserver は、デフォルト以外のインスタンスを定義するための正しいシンボルです。

TCP/IP および名前付きパイプ プロトコルが有効になっていることを確認します (SQL Express では既定で無効になっています)。また、SQL Server Browser サービスが実行されていることを有効にします (既定では無効)。

これらは、Microsoft SQL Server/Configuration Tools の下のスタート メニューにある Sql Server Configuration Manager にあります。「クライアントプロトコル」とリストされた各インスタンスの両方でそれらを有効にしてください。

さらに、ファイアウォールが SQL がリッスンしているポート (デフォルトは 1433) での接続を許可していることを確認してください。

Tiny-TDS のデフォルトは 1433 であるため、ポートを指定する必要はありません。2 番目のコード スニペットにはインスタンスが含まれていません。インスタンスに SQL Express をセットアップしている場合は、ホストではなくデータサーバーを使用し、インスタンス名を指定する必要があります。

于 2013-01-28T05:23:44.793 に答える
2

私はこの正確な問題を抱えていて、最終的にそれを理解しました。これは古いことは知っていますが、将来人々に役立つことを願っています。

Sql Server 構成マネージャー (スタート >> Microsoft SQL Server >> 構成ツール) に移動し、TCP/IP と名前付きパイプを有効にします。ネットワーク構成で、TCP/IP を右クリックし、[プロパティ]、[IP アドレス] の順に移動します。必要な接続を有効にする必要があり (私は VM を使用しているため、IPv4 アドレスを使用しました)、TCP 動的ポートを空白にし、静的ポートを指定します (私は 1433 を使用します)。

次に、ファイアウォールを介してポート 1433 (または静的ポートが何であれ) への着信トラフィックを許可する必要があります。

私はこれをやった、そしてついに入った!

于 2014-03-30T22:47:07.197 に答える
2

ポート番号を (デフォルトの 1433 であっても) config の dataserver 値に追加してみてください。リモート ネットワーク上の SQL Server に到達するためにトラフィック マネージャー アプライアンスをトンネリングするセットアップがありましたが、次のように構成を具体的に設定しない限り、TinyTDS は接続しません。

dataserver: 192.168.1.1:1433\SQL1

私の場合、設定でport:値を設定しても何もしませんでした。とにかく1433がデフォルトであり、他のSQL Server接続構成でポートを指定する必要がないため、この手順が必要だったのは奇妙ですが、この特定のケースではそれを追加することがうまくいきました。

FreeTDS ログ ファイルを監視して、export TDSDUMP=/tmp/freetds.logirb を実行してから起動し、そのログ ファイルを追跡しながら TinyTDS との接続をテストすることで、接続が失敗した理由を詳しく調べることができます。

于 2014-04-16T23:40:17.730 に答える
1

Windows では、以下が必要です。

まず、SQL Server に対するすべての権限を持っている必要があります。これは、Microsoft SQL Server manager studio で行います。

次に、Sql Server 構成マネージャーを使用して、SQL SERVER ネットワーク構成に移動し、INSTANCE のプロトコルを有効にします。これは、名前と TCP/IP を含むパイプラインであり、有効にすると、SQL SERVER サービスに移動して 1 を開始する必要があります。 SQL Server (インスタンス) および 2. Sql Server Browser Explorer (重要)

YAML の場合: (Windows の例)

development:
  adapter: sqlserver
  database: GESTIONESDIVERSASDESARROLLO
  username: Admin1\Admin
  password: passw0rd
  dataserver: ADMIN1\SQLDEVELOPER
  timeout: 10
于 2013-10-04T19:15:43.797 に答える