Sql-Server

在 Linux 上使用我的 SQL Server 創建數據庫時出現錯誤 5123

  • January 1, 2022

我按照本 MS指南的步驟操作,並設法執行 localdb 並使用此腳本創建一個 Testdb:

CREATE DATABASE Test
ON
   (NAME='Test_DAT',
   FILENAME='/home/dlag/Documentos/Proyectos/BDtest/Test.mdf',
   SIZE=10,
   MAXSIZE=50,
   FILEGROWTH=5)
LOG ON
   (NAME='Test_Log',
   FILENAME='/home/dlag/Documentos/Proyectos/BDtest/Test.ldf',
   SIZE=5,
   MAXSIZE=25,
   FILEGROWTH=5);

GO
use Test;
GO

一段時間後,我嘗試使用以下腳本創建另一個數據庫:

CREATE DATABASE BconDatos2
ON
   (NAME='BconDatos2_DAT',
   FILENAME='/home/dlag/Documentos/Proyectos/BDs/BiblioConDatos2/BconDatos2.mdf',
   SIZE=10,
   MAXSIZE=50,
   FILEGROWTH=5)
LOG ON
   (NAME='BconDatos2_Log',
   FILENAME='/home/dlag/Documentos/Proyectos/BDs/BiblioConDatos2/BconDatos2.ldf',
   SIZE=5,
   MAXSIZE=25,
   FILEGROWTH=5);

GO
use BconDatos2;

我得到這個錯誤:

Msg 5123, Level 16, State 1, Line 4

並且說(從西班牙語翻譯):

指令 CREATE FILE found OS error: 2(The system cannot find the file specified.) 試圖打開或創建物理文件時。’/home/dlag/Documentos/Proyectos/BDs/BiblioConDatos2/BconDatos2.mdf’。

Msg 1802, Level 16, State 4, Line 4

(從西班牙語翻譯):

創建數據庫錯誤。無法創建列表中的某些文件。查看相關錯誤

Total execution time: 00:00:00.081

在這兩個數據庫上,我都在 master 中,並且之前創建了 mdf 和 ldf 文件的路徑。

這很奇怪,因為在“測試”數據庫的腳本中,我可以為表創建 SELECTS,但是當我執行時:

SELECT Name from sys.Databases

這個數據庫沒有出現,但是後面創建的另一個空數據庫出現了。

無論如何,在“BconDatos2”數據庫腳本上,我無法創建數據庫……

腳本權限問題?

最後我解決了。問題在於 T-SQL 將要創建文件的目錄中的使用者權限。我讓創建數據庫的使用者“mssql”成為要放置數據庫文件的文件夾的所有者。

問題沒有解決,但我剛剛下載了為 linux 開發的軟體“Azure Data Studio”,我已經能夠看到這些表是在 master 中創建的。看來這個應用程序有效,並且現在對我學習 msslq 更方便。所以也許我們可以關閉這個文章。

引用自:https://dba.stackexchange.com/questions/236666