2

コンソールの C++ アプリケーションから SQLServer データベースに接続したいと考えています。Microsoft SQL Server を使用して、「Test」という名前のデータベースを作成しました。また、sqlapi.com から sqlapi を「インストール」しました。手始めに、sqlapi に同梱されている変更されたサンプル コードを使用して、そのデータベースに接続したいだけです。

#include <stdio.h>  // for printf
#include <SQLAPI.h> // main SQLAPI++ header

int main(int argc, char* argv[])
{
    SAConnection con; // create connection object
    printf("Howdy!\n");
    try
    {
        con.Connect("Test","COMPNAME\Username","Pwd", SA_SQLServer_Client); // database name//  user name //password

        printf("We are connected!\n");

        // Disconnect is optional
        // autodisconnect will ocur in destructor if needed
        con.Disconnect();

        printf("We are disconnected!\n");
    }
    catch(SAException &x)
    {
        // SAConnection::Rollback()
        // can also throw an exception
        // (if a network error for example),
        // we will be ready
        try
        {
            // on error rollback changes
            con.Rollback();
        }
        catch(SAException &)
        {
        }
        // print error message
        printf("%s\n", (const char*)x.ErrText());
    }

    return 0;
}

正常にコンパイルされ、エラーは発生しませんが、接続に失敗します。私はC++の基本よりも少し知っていますが、SQLは昨日から始めました。接続についていくつか質問があります。

  • SQL Server 2008 Express のインストール中に、Username という新しい Windows ユーザー アカウントをパスワード Password で作成しました
  • 接続しようとするとき、データベース名に「Test」を付けるだけで十分ですか、それとも Test.db などにする必要がありますか。ユーザー名については、接続するにはコンピューター名\ユーザー名を書く必要がありますか、それとも単に「ユーザー名」と書く必要がありますか
  • SQLserver をインストールするときに「自動開始」ボックスにチケットを送信しましたが、タスクマネージャーで SQL が実行されていることがわかります。それはサーバーですか、それとも接続を試みる前に何らかの方法で手動で起動する必要がありますか?
  • データベースを作成したアカウントのユーザーとしてログインする必要がありますか、それともユーザー名とパスワードを知っていれば十分ですか?
  • 認証方式は「Windows認証」

問題がどこにあるのか理解できると思いますが、これらの有名な最初のステップです....(VSでプロジェクトをセットアップする方法を理解するまでにかなりの時間がかかりました... ;-))いくつかの答え、またはそれらを見つけることができる場所のヒント (素敵な本やリンク) に感謝します。

4

4 に答える 4

1

Windows 認証を使用している場合は、ユーザー名とパスワードを渡す必要はありません。誰でも「選択」権限を許可するには、データベースを適切に設定する必要があります。SQL Server の汎用ユーザーは「ゲスト」と呼ばれ、おそらくデフォルトでそれを許可するように構成されていると思います。

あなたが抱えている実際の問題は、次のようにサーバー名とデータベース名を一緒に渡す必要があることだと思います。

con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

またはおそらく

con.Connect("ELVIS\SQLEXPRESS@Test","","", SA_SQLServer_Client);

あなたが知る必要があるのはここだけです、あなたはそれを注意深く読んでください.

于 2011-08-12T22:00:41.037 に答える
1

SQL に接続する場合は、データベース名で十分です。知っておく必要があるのは、サーバー、SQL インスタンス名、およびデータベースです。デフォルトのインストールでは、デフォルトのインスタンスが使用されます。つまり、インスタンス名を指定する必要はありません。通常、サービスは SQL Server (MSSQLSERVER) としてインストールされます。

データベースの作成に使用したアカウントのユーザー名を使用する必要はありませんが、他のユーザーのアクセス許可が必要です。少なくともテスト目的では、インストール/作成した名前を使用すると、データベースにアクセスするための適切な権限が付与されます。

どのユーザーを使用するか、またはどの権限が設定されているかがわからない場合は、Management Studio で確認する必要があります。SQL Server Management Studio 2008 Express がまだインストールされていない場合のリンクは次のとおりです。

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b

これにより、ログインしてデータベースを表示し、どのようなセキュリティが設定されているかを確認できます.

于 2011-03-09T17:54:50.980 に答える
0
con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

"@" の後にデータベースの名前を入力します。

于 2013-06-04T16:02:04.370 に答える