簡體   English   中英

無法在Windows 8中使用SQL Server 2008 R2創建數據庫

[英]Can't create database in Windows 8 with SQL Server 2008 R2

我正在嘗試運行為我們的應用程序創建數據庫的安裝腳本,這些腳本在升級到Windows 8之前一直在工作。安裝SQL Server 2008 R2 Express並運行執行以下命令的腳本以創建數據庫:

USE [master]
GO

SET NUMERIC_ROUNDABORT OFF
GO
SET XACT_ABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS, NOCOUNT ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO

IF EXISTS (SELECT name FROM sys.databases WHERE name = N'$(db)')
BEGIN
    ALTER Database [$(db)] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    DROP Database [$(db)]
END
GO

CREATE DATABASE [$(db)]
GO
USE  [$(db)]
GO

我可以運行以下命令行來執行腳本:

sqlcmd -i test.sql -S .\wizrms -d test -U sa -P W1zard

我收到以下錯誤:

消息4060,級別11,狀態1,服務器。\\ WIZRMS,第1行
無法打開登錄請求的數據庫“測試”,登錄失敗。

消息18456,級別14,狀態1服務器。\\ WIZRMS,第1行
用戶“ sa”的登錄失敗。

我可以使用具有相同憑據的SQL Server Management Studio登錄,並使用相同的命令創建數據庫。

所有這些都可以在Windows 7上運行。我的假設是Win 8中必須處理安全性更改。

可能由於參數-d test ,指定了尚不存在的初始數據庫。 當您運行的腳本創建數據庫時,通常首先登錄master數據庫,然后創建數據庫,然后切換到該數據庫以完成所有剩余工作。 但是,在創建數據庫之前嘗試打開該數據庫肯定會產生您在此處發布的錯誤。

SSMS正是這樣做的。 它始終始終先連接到master,然后在您使用不同的DB時切換數據庫。 但是CREATE DATABASE命令始終在master上下文中發出。

Windows版本在這里無關緊要。 可能是,在Win7安裝中,您正在連接到具有預先存在的test數據庫的服務器,而在Win8計算機中,該服務器尚不存在。

謝謝亞歷杭德羅。

我將-d更改為master並使用-v db = fleeb分配了數據庫

我的命令行現在顯示為:

sqlcmd -i test.sql -S sof202 \\ wizrms -d master -U sa -P W1zard -v db = fleeb

它運行無誤,並創建了一個名為fleeb的數據庫。

完善。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM