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

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

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

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

2回答

16280閲覧

SQL Server2016で古いmdf読み込み

teraotailnosuke

総合スコア52

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2017/05/13 02:32

下記URLを試してみようと、SQL Server2016 ExpressPUBS.MDF
をアタッチしようとしたら「データベースのインポート中にエラーが発生しました。」というエラーになりました。
相当昔の記事なので、最新のSQL Serverでは読み込めないのでしょうか?

10 行でズバリ !! 概念モデルの作成 (EDM) (C#)

エラー内容詳細

サーバー '*****\SQLEXPRESS' のデータベースのインポートに失敗しました。 (Microsoft.SqlServer.Smo)
物理ファイル "C:\Work\DB\pubs.mdf" を開けません。オペレーティング システム エラー 5: "5(アクセスが拒否されました。)"。
CREATE DATABASE が失敗しました。一覧されたファイル名の一部を作成できませんでした。関連するエラーを確認してください。 (Microsoft SQL Server、エラー: 5120)

補足

最初は記事の通りに進めようとしましたが、画面が若干2016と違いますし、エラーでうまくいかなかったので、まずはManagement Studioからpubsデータベースを開くところから始めようとしています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

質問者さんは、チュートリアルを始める前の段階で、まず SQL Server 2016 Express の既定のインスタンス(または名前付きインスタンス)に DB をアタッチし、それに SSMS を使って接続することをトライ中と理解しています。

物理ファイル "C:\Work\DB\pubs.mdf" を開けません。

MSDN ライブラリによると、"MSSQLServer サービスの開始アカウント: アカウントは、データまたはログ ファイル (.mdf、.ndf、.ldf) が常駐するフォルダーに対するフル コントロール権限を持っている必要があります。" ということですが、Work フォルダに対して必要な権限がないのでは?

詳しくは以下の記事を見てください。

DB のアタッチ
http://surferonwww.info/BlogEngine/post/2010/09/13/ACL-setting-and-database-attaching-in-SQL-Server.aspx

SQL Server のアカウントに Work フォルダに対する権限を与えるより、SQL Server のインストール時に自動的に必要な権限が与えられる Data フォルダに pubs.mdf をコピーして、それをアタッチした方が簡単ですので、そうすることをお勧めします。

以下、アタッチに失敗するということとは関係ないことですが、注意すべきことを書いておきます。

(1) SQL Server の Express 版をインストールすると、デフォルトでは「名前つきインスタンス」となり、インスタンス名は SQLEXPRESS になります。TCP/IP で接続する際は SQL Server Browser が必要になります(開発環境で共有メモリを使う場合は不要ですが)。

詳しくは以下の記事を見てください。

SQLEXPRESS は「名前つきインスタンス」名
http://surferonwww.info/BlogEngine/post/2012/11/12/express-edition-uses-named-instance-by-defualt.aspx

(2) 参考にされている記事は SQL Server 2008 Express で利用できるユーザーインスタンスに DB をアタッチしてそれに接続することを前提に考えられています。

ユーザーインスタンスが何か不明でしたら以下の記事を見て下さい。

ユーザーインスタンス
http://surferonwww.info/BlogEngine/post/2010/09/14/User-Instance-of-SQL-Server-Express.aspx

今はユーザーインスタンスは非推奨になっており(まだ使うことはできますが)、VS2015 などの新しい環境では LocalDB を使うようにウィザードが動くかもしれません。チュートリアルに進む際はその点に注意してください。

投稿2017/05/13 03:24

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

teraotailnosuke

2017/05/13 05:02

`C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA`にDBを放り込んでアタッチしたら以下のエラーになってしまいました。 データベース 'pubs' をアップグレードできません。 製品版でないバージョン (539) は、このバージョンの SQL Server ではサポートされません。 このバージョンの sqlservr.exe と互換性がないデータベースは開けません。 データベースを再作成してください。 新しいデータベース 'pubs' を開けませんでした。 CREATE DATABASE は中止されます。 (Microsoft SQL Server、エラー: 950)
退会済みユーザー

退会済みユーザー

2017/05/13 06:15

2000 では古すぎて 2016 では自動アップグレードができないようですね。ダウンロードした際、一緒に instpubs.sql というスクリプトが含まれていると思いますが、それを SSMS で走らせてみてください。ただし、スクリプトは一行手直しが必要です。具体的には以下の記事を見てください。LocalDB 2016 では作成できました。SQL Server 2016 Express は試してませんが。 http://fa11enprince.hatenablog.com/entry/2014/05/28/234203
teraotailnosuke

2017/05/13 11:34 編集

pubsデータベースが作成できたので、記事の内容を進めました。 「4.EDMの追加」で躓きました。 「ADO.NET Entity Data Model」を追加 モデルに含めるコンテンツ:データベースから EF Designer 接続のプロパティ  データソース:Microsoft SQL Server データベースファイル  データベースファイル名:pubs.mdf でOKでエラーになりました。 データベースのアタッチに失敗しました。 SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。 サーバーが見つからないかアクセスできません。 イベントログ: LocalDB 親インスタンスのバージョンが無効です: MSSQL12E.LOCALDB ここの情報を参考に、レジストリの"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Microsoft SQL Server\UserInstances"を削除してみました。 https://social.msdn.microsoft.com/Forums/en-US/aabaa5b7-05c8-4c0b-a559-bacbef0a41f4/mssqllocaldb-instance-issue?forum=sqlexpress エラーの内容が変わりました。 Unable to open the physical file "C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\pubs.mdf". Operating system error 5: "5(アクセスが拒否されました。)". An attempt to attach an auto-named database for file C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\pubs.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
退会済みユーザー

退会済みユーザー

2017/05/13 13:05 編集

> pubsデータベースが作成できたので、記事の内容を進めました。 それができたのであれば掲題&最初の質問の課題・問題は解決したのですよね。 で、次のステップとして、チュートリアルを始めて、その過程で表題&最初の質問とは別の問題に遭遇したのですよね。 あれば、このスレッドはクローズして掲題&最初の質問ではないことは新たに別のスレッドを立てて質問してください。 最初の質問の回答が次の疑問を生んで、次から次へと質問を繰り返すのは、ここのようなサイトでは最も好ましくないパターンです。 その前に、私の先のレスの (2) をよく考えてください。
guest

0

追記の:teraotailnosuke 2017/05/13 14:02  記述より、
pubs のサンプルDBが 取得できれば良いと
解釈して、

グーグル検索で、
ms sql sample database

sql 2008 sample database
sql 2005 sample database
sql 2008 sample database pubs
などで、ヒットしたリンクを丹念に探してください。

Official Microsoft GitHub Repository containing code samples for SQL Server
Microsoft/sql-server-samples
などに辿り付ける筈です。(入手方法は、Git以外にもあります。)
必要な情報を取得する過程も重要ですので、直リンクは掲示しません。

pubs や NorthWind などは、古くからあるサンプルデータです。
⇒ACCSESS2.0 の頃からの焼き直しなんてのも、存在します。
正しいサイトに辿り付けると、MS-SQL2000~ の歴代サンプルデータベースが
取得出来たりします。(サイト再構成で無くなっている場合は除く)

MSのサンプルプロジェクトには、稀にCTPやRC版を使った物があります。
今回のDB部分が、将にそれに当たってしまった様子。

投稿2017/05/13 05:28

編集2017/05/13 05:36
daive

総合スコア2028

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問