Вопрос: когда я составляю таблицу (T_TableName
) с помощью Studio управления SQL Server это всегда составляет таблицу как
Domain\UserName.T_TableName
вместо
dbo.T_TableName
Что случилось?
Если вы не укажете схему явно в имени создаваемой таблицы, она будет создана в текущей пользовательской схеме по умолчанию.
Готов поспорить, что пользователь, которого вы используете, имеет свою собственную личную схему, установленную в качестве схемы по умолчанию - поэтому ваши таблицы создаются в его собственной личной схеме.
Вы можете проверить, какие пользователи базы данных у вас есть и какова их схема по умолчанию, проверив sys.database_principals
(SQL Server 2005 и выше):
SELECT name, type_desc, default_schema_name
FROM sys.database_principals
Чтобы решить эту проблему:
укажите схему, которую вы хотите использовать явно (в любом случае это лучшая практика!)
CREATE TABLE dbo.T_TableName
изменить схему пользователя по умолчанию на dbo
ALTER USER [Domain \ YourUser] WITH DEFAULT_SCHEMA = dbo
Но, как правило, я рекомендую всегда использовать "dbo". префикс явно, если вы хотите, чтобы все объекты вашей базы данных были в схеме dbo. Также помогает с производительностью (даже немного), поскольку SQL Server не придется искать в разных схемах, если вы явно укажете ему, где находятся ваши объекты db.
Вам нужно либо создать свою таблицу как "dbo.Whatever", ЛИБО вам нужно изменить схему по умолчанию (или пусть SA сделает это за вас) введя команду типа:
ALTER USER [DOMAINNAME\UserName] WITH DEFAULT_SCHEMA = dbo;
Я думаю, что это критически важно, чтобы вы ознакомились с unix прямо сейчас.
Отличный способ сделать это с Knoppix CD.
Попробуйте скомпилировать свои программы под Linux с помощью gc, а когда они не работают, отследить проблемы (# include < windows >?) и сделать их работоспособными. Затем вернитесь к окнам и, скорее всего, скомпилируйте ОК.
Таким путь обнаружите, что ваши программы становятся более чистыми и более качественными учебными материалами, даже для лабораторных упражнений на оконных машинах.
-121--2890408-В .NET Framework атрибуты могут использоваться по многим причинам - например,
Определение классов serializable
Выбор методов, отображаемых в веб-служба
Attributes
позволяет добавлять описания
к классам, свойствам и методам во время разработки, которые затем могут быть проверены во время выполнения посредством отражения.
Рассмотрим этот пример:
Скажем, что у вас есть класс, который имеет метод из старой версии, который все еще используется по любой причине, и теперь вы придумали новую версию класса, который делает фантастическое использование Generic List и LINQ и имеет новый метод для аналогичной цели. Вы хотите, чтобы разработчики предпочли новый, предоставленный в более поздней версии вашей библиотеки. Как ты это сделаешь? Один из способов - написать в документации. Лучший способ - использовать атрибут следующим образом.
public class AccountsManager
{
[Obsolete("prefer GetAccountsList", true)]
static Account[] GetAccounts( ) { }
static List<Account> GetAccountsList( ) { }
}
Если при компиляции программы используется устаревший метод
, разработчик получает эту информацию и принимает соответствующее решение.
AccountManager.GetAccounts () устарел: Предпочтительнее GetTalkedList
Можно также создать и добавить Пользовательские атрибуты
в соответствии с требованиями.
Ссылка:
Надеюсь, это поможет
-121--1146890-Вызовите dbo. T_TableName в SSMS. Если у вас есть правильные разрешения, это будет работать.
Назначен ли вам db_owner
для базы данных, в которой вы создали таблицу? Если нет, это может быть проблемой. Попробуйте добавить свои разрешения сопоставления пользователей в базу данных как таковую.
USE [yourDatabase]
GO
EXEC sp_addrolemember N'db_owner', N'DOMAIN\UserOrGroup'
GO