質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

5809閲覧

SQLデータベースソフトが別のPCでデータベースを読み込まない

RyukeO

総合スコア17

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/08/29 10:01

###前提・実現したいこと
VisualBasic2015パーフェクトマスターの書籍のSection6にて
ADO.netによるデータベースプログラミングという解説があります。

それによればデータベースの作成し、
Imports System.Data.SqlClientをして
データベースを表示させたり追加せたり削除したりと言った事が解説してあります。
解説通りWin10の自分のVisualStudio2017Communityにて作成した所思い通りの動きをしました。
少し改変してデータベースファイルは会社のサーバーに置いて実行したらちゃんと動作しました。
(サーバーのデータベースファイルのタイムスタンプが更新されているのでサーバーのデータベースにちゃんとアクセスできているはずです)

やりたいことはどのPCからもプログラムを起動すれば使えるようにしたいです。
他のPCでは何をインストールすれば動作するのでしょうか?

###発生している問題・エラーメッセージ
この作成したプログラムを他のPCで動かそうとしたら動作してくれません(データベースファイルを見つけてくれない様な感じ)
スプラッシュスクリーンはすぐに表示され、データベースへの接続タイムアウトに設定してる30秒立ったあたりでエラーメッセージとなります。
数人のPCで実行した所、英語でエラーメッセージが出たり日本語だったりばらばらでした。
今は作成場所である会社ではないのでエラーメッセージが的確に答えられないのですが・・
エラー52というのが出ていたのは覚えています。
メッセージには続行(継続?)と終了のボタンが有り、続行を押すとFormは出るけどデータ内容は表示されていません。

###試したこと
色々検索していたのですが、動かないPCにSQL Server Express2016を入れだけど動きませんでした。

わからなさすぎて思い切ってVisualStudio2017Communityを入れても動かず、そのPCでコンパイルしたら何故か(読み込もうとしてる)データベースのバージョンが新しいため(対応していないから)続行できないエラーになってしまいました。

当該書籍には「ADO.NETは、プログラム側からデータベースに接続するためのテクノロジーなので
データベースサーバーではなく、クライアントアプリケーションが稼働するコンピュータには、
ADO.NETを含む.NET Frameworkがインストールされていることが必要です」と書かれていたので
最新の.NET Framework4.7を入れようとしましたがすでに入っている状態でした。

###補足情報(言語/FW/ツール等のバージョンなど)
帰宅後、このサイトを見つけましたので情報が欠けすぎていてすみません。
以下が動作する自分のPCに入っているコンポーネントです。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQL Server はファイル共有型ではなく本格的なデータベースサーバーですので、一般的にはこんな感じで利用します。

サーバーの準備
1.Windows Server マシンに SQL Server Express をインストール(既に SQL Server Standard/Enterprise 等が入っている場合はインストール不要。そのまま利用可)。ここではサーバー名を Server1 とする。
2.SQL Server 構成マネージャーを開いて、以下の作業を行う。
a)SQL Server サービスを起動。
b)TCP/IP接続を許可する。
c)ファイヤーウォールを有効にしている場合はTCP/1433を許可設定する。
3.Management Studio を開いて以下の作業を行う。
a)データベースファイル(mdf)をサーバーの適当な場所に保存し、アタッチ。ここではデータベース名を Database1 とする。(バージョン違い等でアタッチできないときは新規に作り直す)
b)ログインを作成。
認証 SQL Server 認証
ログイン名 User1
パスワード Pass1
既定のデータベース Database1
アクセスできるデータベース Database1
役割 db_owner

プログラムの準備
接続文字列 "Data Source=Server1;Initial Catalog=Database1;User ID=User1;Password=Pass1" でプログラムを作り、ビルドし、exeファイルを作る。

利用
.NET Framework 4.7 が入っていない場合は入れる。
exeをコピーし、exeを実行。

投稿2017/08/29 12:02

編集2017/08/29 12:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyukeO

2017/08/29 14:12

回答ありがとうございます。 もしかして自分がやろうとしていることは大掛かりなことでしょうか。。。 確かに.mdfを置いてやろうとしていましたが、Windows ServerマシンにてSQL Server Express をインストールという所からつまづきそうです。自分でできるのか、出来ても会社の許可云々で・・ .mdfファイルを作成して触るということぐらいしか書籍には書いておらず、 小規模データベースソフトを作るのは特別なことをしなくてもいいとの認識でした。 作成したソフトの保存データをサーバー上に置きどのPCからもそのデータにアクセスし編集出来るというデータベースソフトを作ってたつもりですが(そういったソフトってよくありますよね?エクセルもそういう感じにできますし、OpenOfficeOrgのAccessのようなソフトとか)サーバーマシンそのものに何か手を加えないといけないでしょうか? それとも考えてることとやってることが違うのでしょうか? 今は何もすることが出来ないですので、ログインやら接続文字列やら見覚えのあるキーワードがありますので明日会社で設定とか色々見てみようと思います。 その際追加質問などが出来たらしてみようと思います。
退会済みユーザー

退会済みユーザー

2017/08/29 15:25

SQL Server を初めて利用するときは、基本的にサーバーに手を加えないといけません。Windows Server が容易に利用できないときは、Windows 7/8/10 などのクライアントマシンに SQL Server を入れることもできますので、まずはそれで試してみると良いと思います。クライアントマシンに入れた場合は10台までの同時接続に制限されます。インターネットに自由に出られる環境であれば、Azure SQL Database を利用する手もあります。Azure SQL Database は SQL Server のクラウドサービス版です。 ファイル共有型で作りたい場合、私が知っているのは Microsoft Access のファイル形式(.accdb)で作ることです。「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」や「Microsoft Access 2016 Runtime」と言うパッケージをマイクロソフトのサイトからダウンロードしてインストールし、少し接続方法を変更すれば使えます。 コード例 Imports System.Data.OleDb Class MainWindow Private Sub Button_Click(sender As Object, e As RoutedEventArgs) Dim value As String Using connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ユーザー名\Documents\Database1.accdb") connection.Open() Using command As New OleDbCommand("SELECT フィールド1 FROM テーブル1", connection) value = CStr(command.ExecuteScalar) End Using End Using MessageBox.Show(value) End Sub End Class インストールしたモジュールに合わせて接続文字列のプロバイダのバージョン(12.0/15.0/16.0)やコンパイルオプション(32bit優先)を変更する必要があります。詳しくは以下を参照してください。 http://qiita.com/yaju/items/86314412741deb806366 Access データベースは手軽ですがファイルが壊れやすいと言う欠点があるので、本格的に大人数で重要なデータを共有するときは、SQL Server の利用をお勧めします。
RyukeO

2017/09/01 03:03

期間が空いてしまいすみません。 いろいろ調べたところSQLiteなるものの存在を知りました。 プログラムファイルとデータベースファイルさえあれば動かせる、使っても数人程度、データは溜まっても数万行も行かないなどの理由から。 自分が要求するものに当てはまると思い、SQLiteを使用しようと思います。 プログラミングする際また躓いてしまったら質問を改めてさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問