Прежде всего, работа CREATE DATABASE
не переключает вас в этот контекст. Если, например, я в настоящее время подключен к My_DB
и запустил команду CREATE DATABASE
, возможно, DB, но я все равно буду работать с My_DB
.
Я только указываю на это, потому что ваш вопрос не показывает, что вы переключаете контекст БД, и это может быть актуально, в зависимости от того, как настроен ваш сервер.
CREATE DATABASE TEST_1234_5678
GO
USE TEST_1234_5678
GO
CREATE TABLE TBL_ANALYSIS
(ID INT NOT NULL IDENTITY(1,1),
DATABASE_NAME VARCHAR(14) DEFAULT DB_NAME()
)
GO
INSERT INTO TBL_ANALYSIS DEFAULT VALUES
GO
В зависимости от ошибки, которую вы получаете, это может быть несколько разных вещей. Предполагая, что вы находитесь в правильном контексте и подключены как пользователь с разрешениями, сообщение об ошибке, которое вы получаете, может быть чрезвычайно важно для решения проблемы. Я бы рекомендовал, чтобы вы переключали контексты, и если он все еще не работает для вас, вы можете рассмотреть вопрос о редактировании своего вопроса и опубликовать фактическое сообщение об ошибке.
EDIT: After getting some more information from you, I understand that the issue is in trying to create a column with a default value based on other columns in the table. This isn't something that is supported in SQL Server, but you can use a computed column to get the same information. Since this isn't a complex operation, you could do something as simple as this:
CREATE DATABASE TEST_1234_5678
GO
USE TEST_1234_5678
GO
CREATE TABLE TBL_ANALYSIS
(
ID INT NOT NULL IDENTITY(1,1)
,DATABASE_NAME VARCHAR(14) DEFAULT DB_NAME()
,DESIRED_ID AS DATABASE_NAME + CAST(ID AS VARCHAR(14))
)
GO
INSERT INTO TBL_ANALYSIS DEFAULT VALUES
GO
SELECT * FROM TBL_ANALYSIS
GO
Это работает для меня: 'INSERT INTO TBL_ANALYSIS DEFAULT VALUES;' –
Какую ошибку вы видите? –
DB_NAME() requieres ALTER ANY DATABASE permissions – McNets