Таблицы, созданные по умолчанию в пользовательской схеме - PullRequest
2 голосов
/ 14 мая 2009

В Sql Server 2008, когда я создаю таблицу без префикса схемы:

create table mytable ( id int identify )

обычно заканчивается в схеме dbo с именем dbo.mytable.

Однако на одном из наших серверов табель принадлежит мне:

andomar.mytable

Какая разница в конфигурации может объяснить это?

Ответы [ 2 ]

1 голос
/ 14 мая 2009

Это зависит от того, какая ваша схема по умолчанию находится в этой базе данных. Даже в SQL Server 2005, если ваша схема по умолчанию в этой одной базе данных является andomar, все таблицы, созданные без явной схемы, окажутся там.

Проверьте пользовательские свойства в этой базе данных (не свойства входа в систему) и посмотрите, какова схема по умолчанию.

0 голосов
/ 05 марта 2014

Если вы не определите схему, в которой вы создаете таблицу, она всегда будет использовать схему по умолчанию. Вы можете создать его так:

USE DataBaseName -- define database to use
GO
BEGIN TRAN - if you will have any error everything will roll back
CREATE TABLE testovi.razine - schema name is "testovi" and tablename is "razine"
(
id INT NOT NULL IDENTITY(1,1),
razina NVARCHAR(50) NULL,
razinaENG NVARCHAR(50) NULL,
kreirao UNIQUEIDENTIFIER NULL,
VrijemeKreiranja DATETIME NULL
)
ON [PRIMARY]
GO

При создании таблицы всегда устанавливайте ограничение и индекс для столбца, наиболее часто используемого для транзакции

ALTER TABLE testovi.razine ADD CONSTRAINT
PK_mat_razine PRIMARY KEY CLUSTERED
(id) WITH(IGNORE_DUP_KEY=OFF,  --check duplicate and don't ignore if try to insert one
STATISTICS_NORECOMPUTE=OFF,  -- important for statistic update and query optimization
ALLOW_PAGE_LOCKS=ON) -* I believe that this is default, but always put it to on if not
ON [PRIMARY]
GO
if @@error<>0
BEGIN
ROLBACK TRAN
END
ELSE
BEGIN 
COMMIT TRAN --if everything passed o.k. table will be created
END

Если вы хотите установить схему по умолчанию, вы должны знать, что это пользовательская схема по умолчанию, поэтому вы можете установить ее с кодом:

USE espabiz -- database;
ALTER USER YourUserName WITH DERAULT_SCHEMA = SchemaName; -- SchemaName is default schema for defined user

Пинг, если вам нужна дополнительная помощь или отметьте ответ, вы найдете его пригодным для использования:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...