Tablo dbo şeması altında oluşturulmuyor


16

SSMS'de tablolar oluştururken, aşağıdaki ifadeyi yürütürseniz fark ettim:

CREATE TABLE [tableName];

tablo kendi şemanız altında oluşturulacaktır (dbo değil). Yani dbo şeması altında oluşturmak için, açıkça şöyle söylemeniz gerekir:

CREATE TABLE [dbo].[tableName];

Herkes, bir tablo oluşturulduğunda, [dbo] parçasının belirtilmesi gerekmediği bir yol (ör. Sunucu çapında ayar) biliyor mu?


1
SQL Server'ın hangi sürümü?

4
Ve neden açıkça belirtmeyle ilgili bir sorununuz var?
HLGEM

Yanıtlar:


8

Şema atlandığında kullanılacak şema, veritabanı kullanıcısının varsayılan şeması olacaktır. Bu nedenle, sahip dboBunu olarak veritabanı kullanıcının varsayılan şema ayarlamak zorunda kalacaktı belirtmeden oluşturulan tablo var şema dbo.

Sunucu genelinde ayar? Ben öyle düşünmüyorum. Ancak, belirli bir veritabanındaki tüm veritabanı kullanıcılarını varsayılan şemalarına dönüştürmek için bir sorgu yazabilirsiniz dbo, bu şekilde seçtiyseniz.


@KAJ: SQL2008R2
Chinesinho

1
Ancak Windows grupları için varsayılan şemayı dbo olarak ayarlayamazsınız ...
Chinesinho

5
@Chinesinho Herhangi bir sunucu yöneticisinin varsayılan şemasını ayarlayamazsınız. Sunucu oturumlarını ve veritabanı kullanıcılarını karıştırıyorsunuz. Veritabanı kullanıcıları varsayılan şemalar içerir.
Thomas Stringer

Windows grup oturum açma bilgileriyle eşlenen kullanıcılar için varsayılan şemayı ayarlamak, SQL Server 2012'den önce desteklenmez.
db2

8

Belki bu yardımcı olabilir

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

3
ancak kullanıcı Windows Kimlik Doğrulaması'ndaysa, varsayılan şemayı ayarlayamaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.