ฉันจะเปลี่ยนฐานข้อมูลเริ่มต้นใน SQL Server โดยไม่ต้องใช้ MS SQL Server Management Studio ได้อย่างไร


166

ฉันทิ้งฐานข้อมูลจาก SQL Server แต่ปรากฎว่าเข้าสู่ระบบของฉันถูกตั้งค่าให้ใช้ฐานข้อมูลที่ลดลงเป็นค่าเริ่มต้น ฉันสามารถเชื่อมต่อกับ SQL Server Management Studio โดยใช้ปุ่ม 'options' ในกล่องโต้ตอบการเชื่อมต่อและเลือก 'master' เป็นฐานข้อมูลเพื่อเชื่อมต่อ อย่างไรก็ตามเมื่อใดก็ตามที่ฉันพยายามทำสิ่งใด ๆ ใน object explorer จะพยายามเชื่อมต่อโดยใช้ฐานข้อมูลเริ่มต้นและล้มเหลว

ไม่มีใครรู้วิธีการตั้งค่าฐานข้อมูลเริ่มต้นของฉันโดยไม่ต้องใช้วัตถุ Explorer ?

คำตอบ:


38

ทางเลือกในการ sp_defaultdb (ซึ่งจะถูกลบใน Microsoft SQL Server รุ่นอนาคต ) อาจเป็นALTER LOGIN:

ALTER LOGIN [my_user_name] WITH DEFAULT_DATABASE = [new_default_database]

หมายเหตุ: ไม่เหมือนกับชื่อsp_defaultdbผู้ใช้โซลูชันและชื่อฐานข้อมูลที่จัดทำโดยไม่มีเครื่องหมายคำพูด ต้องใช้วงเล็บถ้าชื่อมีตัวอักษรพิเศษ (ตัวอย่างที่พบบ่อยที่สุดคือผู้ใช้โดเมนซึ่งเป็นชื่อโดเมน \ ชื่อผู้ใช้และจะไม่ทำงานหากไม่มีเครื่องหมายวงเล็บ)


1
ทีนี้คำถามนี้ก็เริ่มแก่ไปแล้ว ในขณะที่ฉันใช้ SQL 2005 Alter เข้าสู่ระบบไม่ได้เพิ่มจนกว่ารุ่น 2008
Martin Brown

@ MartinBrown ใช่ฉันใช้sp_deafultdbมานานแล้ว ฉันประหลาดใจที่มีวิธี "ใหม่"
Marek

หมายเหตุ: ไม่ต้องใช้เครื่องหมายคำพูดเดี่ยว ๆ รอบ ๆ ฟิลด์ my_user_name หรือฐานข้อมูลและอาจทำให้เกิดข้อผิดพลาด เห็นได้ชัดว่ามือที่มีประสบการณ์ แต่อาจจะไม่เป็นเช่นนั้นกับคนที่ทำสิ่งนี้เป็นครั้งคราว วงเล็บเหลี่ยมเป็นตัวเลือกหากฟิลด์แสดงข้อความที่ต่อเนื่องกัน
iokevins

ฉันเชื่อมต่อกับฐานข้อมูล PROD ผ่านกลุ่มดังนั้นฉันไม่มีการเข้าสู่ระบบบนเซิร์ฟเวอร์เมื่อฉันพยายามเรียกใช้ข้างต้นฉันได้รับ "ไม่สามารถเปลี่ยนการเข้าสู่ระบบ 'DOMAIN \ myuser' เพราะมันไม่มีอยู่หรือคุณ ไม่ได้รับอนุญาต ". ยิ่งแย่ไปกว่านั้นฉันอยู่ในหลาย ๆ กลุ่มเพราะแต่ละกลุ่มให้สิทธิ์การเข้าถึงฐานข้อมูลจำนวนมากบนเซิร์ฟเวอร์ ข้อเสนอแนะ?
matao

1
ในการค้นหาว่าฐานข้อมูลเริ่มต้นของล็อกอินคืออะไรให้เลือกชื่อ default_database_name จาก sys.server_principals
DocOc

215

สิ่งที่คุณสามารถทำได้คือการตั้งค่าฐานข้อมูลเริ่มต้นของคุณโดยใช้กระบวนการ sp_defaultdb ระบบที่เก็บไว้ เข้าสู่ระบบตามที่คุณได้ทำแล้วคลิกปุ่มสร้างแบบสอบถาม หลังจากนั้นให้เรียกใช้คำสั่ง sp_defaultdb ดังนี้:

Exec sp_defaultdb @loginame='login', @defdb='master' 

ขอบคุณจริงๆ. ทำงานเหมือนมีเสน่ห์ (และสอนฉันเกี่ยวกับกล่องโต้ตอบ 'ตัวเลือก' เพื่อระบุ db)
penderi

คำถามนี้ทำให้เกิดคำถามเกี่ยวกับmeta
abel

1
ใช้งานไม่ได้ดีถ้าคุณอยู่ในกลุ่มโฆษณาและคุณไม่ต้องการเปลี่ยนฐานข้อมูลเริ่มต้นสำหรับนักพัฒนาอื่น ๆ
DOK

@DOK: แต่ฉันจะสมมติว่าหากการเข้าสู่ระบบของคุณแตกในลักษณะนี้ผู้พัฒนารายอื่น ๆ ดังนั้นการแก้ไขสำหรับพวกเขาทั้งหมดจะเป็นสิ่งที่ดีอย่างแน่นอน?
Martin Brown

มีฐานข้อมูลที่แตกต่างกันหลายสิบตัวบนอินสแตนซ์ SQL Server นี้โดยเฉพาะ เราทุกคนต้องการฐานข้อมูลเริ่มต้นที่แตกต่างกัน หากเราสร้างกลุ่มผู้ใช้ที่แตกต่างกันสำหรับแต่ละฐานข้อมูลเพื่อให้สามารถมีฐานข้อมูลเริ่มต้นที่ต้องการเราทุกคนจะต้องอยู่ในกลุ่มผู้ใช้ที่แตกต่างกันหากเราต้องการเห็นฐานข้อมูลที่แตกต่างกันและจากนั้นเราจะสูญเสียค่าเริ่มต้นที่ต้องการ ฉันหวังว่าจะมีวิธีใน Management Studio เพื่อแก้ไขฐานข้อมูลเริ่มต้น แต่จนถึงขณะนี้ฉันยังไม่พบวิธีการที่ใช้งานได้จริง
DOK

49

ในการดำเนินการตามวิธี GUI คุณจะต้องแก้ไขการเข้าสู่ระบบของคุณ หนึ่งในคุณสมบัติของมันคือฐานข้อมูลเริ่มต้นที่ใช้สำหรับการเข้าสู่ระบบนั้น คุณสามารถค้นหารายการการเข้าสู่ระบบภายใต้โหนดการเข้าสู่ระบบภายใต้โหนดความปลอดภัย จากนั้นเลือกล็อกอินของคุณแล้วคลิกขวาและเลือกคุณสมบัติ เปลี่ยนฐานข้อมูลเริ่มต้นและชีวิตของคุณจะดีขึ้น!

โปรดทราบว่าคนที่มี sysadmin privs จะต้องสามารถเข้าสู่ระบบเพื่อทำสิ่งนี้หรือเรียกใช้แบบสอบถามจากโพสต์ก่อนหน้า


มันใช้งานได้ดี! เพิ่งพิมพ์ไปที่นั่น "master" db แทน "default"
apprich

1
ปัญหาที่ฉันพบคือฉันเป็นผู้ดูแลระบบและได้ลบฐานข้อมูลที่ฉันตั้งไว้เป็นค่าเริ่มต้นและไม่สามารถเข้าถึงกล่องโต้ตอบนี้ได้
Martin Brown

@ มาร์ตินบราวน์เป็นอย่างที่ฉันอาจจะไม่ได้ทิ้งโต๊ะและฉันก็ยังคงนำไปสู่คำถามของคุณ แต่รู้สึกสะดวกสบายมากขึ้นกับโซลูชั่น GUI
djv

41

ขอบคุณโพสต์นี้ฉันพบคำตอบง่ายขึ้น:

  1. เปิด Studio จัดการเซิร์ฟเวอร์ SQL

  2. ไปที่วัตถุ Explorer -> ความปลอดภัย -> เข้าสู่ระบบ

  3. คลิกขวาที่ล็อกอินและเลือกคุณสมบัติ

  4. และในหน้าต่างคุณสมบัติเปลี่ยนฐานข้อมูลเริ่มต้นและคลิกตกลง


1
ยินดีต้อนรับสู่ StackOverflow และขอขอบคุณที่ให้คำตอบ คุณอาจต้องการที่จะดูที่คุณสมบัติของบรรณาธิการ Markdown ดังนั้นคุณสามารถจัดรูปแบบบล็อกรหัสรายการ ฯลฯ .: stackoverflow.com/editing-help ฉันได้แก้ไขคำตอบของคุณเพื่อปรับปรุงการจัดรูปแบบสำหรับคุณ
Paul Turner

ประเด็นทั้งหมดของคำถามนี้คือสิ่งที่คุณอธิบายไม่ทำงานหากคุณลบฐานข้อมูลเริ่มต้นสำหรับบัญชีเข้าสู่ระบบของคุณเอง ในกรณีของฉันโดยเฉพาะฉันเป็นผู้ดูแลระบบคนเดียวในระบบดังนั้นจึงไม่สามารถใช้บัญชีของผู้อื่นเพื่อให้ได้ผลเช่นเดียวกัน
Martin Brown

@Mattijs หวังว่าคุณจะอ่านบรรทัดสุดท้ายของคำถาม "ไม่มีใครรู้วิธีตั้งค่าฐานข้อมูลเริ่มต้นของฉันโดยไม่ใช้ Object explorer" นั่นเป็นเพียงสิ่งที่คุณขอให้ทำ
Rohit Vipin Mathews

2
นี่อาจไม่ได้ตอบคำถามของ OP แต่มันก็ตอบฉัน มันเป็นคำตอบที่มีประโยชน์
CJ Dennis

1
ไม่สามารถทำได้ที่ฐานข้อมูล Azure: /
Squazz

14

หากคุณไม่มีสิทธิ์ในการเปลี่ยนฐานข้อมูลเริ่มต้นคุณสามารถเลือกฐานข้อมูลอื่นที่ด้านบนของคิวรีของคุณ ...

USE [SomeOtherDb]
SELECT 'I am now using a different DB'

จะทำงานได้ตราบใดที่คุณได้รับอนุญาตจากฐานข้อมูลอื่น


8
  1. คลิกที่ไอคอนเปลี่ยนการเชื่อมต่อ
  2. คลิกตัวเลือก <<
  3. เลือกดร็อปดาวน์จากเชื่อมต่อกับฐานข้อมูล

ด้วยเหตุผลบางอย่างสิ่งนี้ได้ผลสำหรับฉันในบางกรณีและไม่ใช้กับคนอื่น
levininja

3

ฉันจะชอบALTER LOGINคำสั่งตามที่ได้รับการยอมรับและอธิบายที่นี่

แต่สำหรับคนรัก GUI

  1. ไปที่ [SERVER INSTANCE] -> ความปลอดภัย -> การเข้าสู่ระบบ -> [เข้าสู่ระบบของคุณ]
  2. คลิกขวาที่ [เข้าสู่ระบบของคุณ]
  3. อัพเดตตัวเลือกฐานข้อมูลเริ่มต้นที่ด้านล่างของหน้า

เหนื่อยกับการอ่าน !!! เพียงแค่ดูต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่



0

สิ่งนี้อาจหรืออาจไม่ตอบคำถาม แต่ฉันพบปัญหานี้ (และคำถาม) เมื่อฉันเปลี่ยนบัญชีของฉันให้มีฐานข้อมูลใหม่ที่ฉันสร้างขึ้นเป็น "ฐานข้อมูลเริ่มต้น" ของฉัน จากนั้นฉันลบฐานข้อมูลนั้นและต้องการทดสอบสคริปต์การสร้างของฉันตั้งแต่เริ่มต้น ฉันออกจากระบบ SSMS และกำลังจะกลับไป แต่ถูกปฏิเสธ - ไม่สามารถลงชื่อเข้าใช้ฐานข้อมูลเริ่มต้นได้เป็นข้อผิดพลาด D'โอ้!

สิ่งที่ฉันทำคือในกล่องโต้ตอบการเข้าสู่ระบบสำหรับ SSMS ไปที่ตัวเลือกคุณสมบัติmasterการเชื่อมต่อจากนั้นพิมพ์บน combobox "เชื่อมต่อกับฐานข้อมูล" คลิกเชื่อมต่อ ให้ฉันมาจากที่นั่นคุณสามารถเรียกใช้คำสั่งไปที่:

ALTER LOGIN [DOMAIN\useracct] WITH DEFAULT_DATABASE=[master]
GO

-1

หากคุณใช้การรับรองความถูกต้องของ windows และคุณไม่ทราบรหัสผ่านเพื่อเข้าสู่ระบบในฐานะผู้ใช้ผ่านชื่อผู้ใช้และรหัสผ่านคุณสามารถทำได้: บนหน้าจอเข้าสู่ระบบบน SSMS คลิกตัวเลือกคลิกที่ด้านล่างขวาจากนั้นไปที่แท็บคุณสมบัติการเชื่อมต่อ . จากนั้นคุณสามารถพิมพ์ชื่อของฐานข้อมูลอื่นที่คุณเข้าถึงด้วยตนเองซึ่งจะแจ้งให้คุณทราบซึ่งจะช่วยให้คุณเชื่อมต่อได้ จากนั้นทำตามคำแนะนำอื่น ๆ สำหรับการเปลี่ยนฐานข้อมูลเริ่มต้นของคุณ

https://gyazo.com/c3d04c600311c08cb685bb668b569a67

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.