ตารางไม่ถูกสร้างภายใต้ dbo schema


16

เมื่อสร้างตารางใน SSMS ฉันรู้ว่าถ้าคุณรันคำสั่งต่อไปนี้:

CREATE TABLE [tableName];

ตารางจะถูกสร้างภายใต้สคีมาของคุณเอง (ไม่ใช่ dbo) ดังนั้นเพื่อสร้างมันภายใต้สคี dbo คุณจะต้องพูดอย่างชัดเจนเช่นนี้:

CREATE TABLE [dbo].[tableName];

ไม่มีใครรู้วิธี (เช่นการตั้งค่าทั้งเซิร์ฟเวอร์) เพื่อให้เมื่อมีการสร้างตารางส่วน [dbo] ไม่จำเป็นต้องระบุ


1
เซิร์ฟเวอร์ SQL เวอร์ชันใด

4
และทำไมคุณถึงมีปัญหากับการระบุอย่างชัดเจน?
HLGEM

ซ้ำเป็นไปได้ของSQL 2008 R2 สร้างผู้ใช้ / คีมาเมื่อผู้ใช้ Windows สร้างตาราง และที่เกี่ยวข้องdba.stackexchange.com/q/7254/630
gbn

คำตอบ:


8

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

การตั้งค่าทั้งเซิร์ฟเวอร์? ฉันไม่คิดอย่างนั้น แต่คุณสามารถเขียนแบบสอบถามเพื่อแปลงผู้ใช้ฐานข้อมูลทั้งหมดในฐานข้อมูลเฉพาะไปเป็นสคีมาเริ่มต้นของพวกเขาเปลี่ยนเป็นdboถ้านั่นคือสิ่งที่คุณเลือก


@KAJ: SQL2008R2
Chinesinho

1
แต่คุณไม่สามารถตั้งคีมาเริ่มต้นที่ dbo สำหรับกลุ่ม Windows ...
จินซินฮ

5
@Chinesinho คุณไม่สามารถตั้งค่าสคีมาเริ่มต้นของเซิร์ฟเวอร์หลักใด ๆ ได้ คุณกำลังสับสนในการเข้าสู่ระบบเซิร์ฟเวอร์และผู้ใช้ฐานข้อมูล ผู้ใช้ฐานข้อมูลมีสกีมาเริ่มต้น
Thomas Stringer

การตั้งค่าสคีมาเริ่มต้นสำหรับผู้ใช้ที่แมปกับการเข้าสู่ระบบกลุ่ม Windows ไม่ได้รับการสนับสนุนก่อน SQL Server 2012
db2

8

บางทีนี่อาจช่วยได้

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO

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