2010-02-19 12 views

Antwort

9

Wenn Sie für den zu erstellenden Tabellennamen kein explizites Schema angeben, wird dieses im aktuellen Standardschema des Benutzers erstellt.

Ich wette, der Benutzer, den Sie verwenden, hat sein eigenes persönliches Schema als sein Standardschema festgelegt - deshalb werden Ihre Tabellen in seinem eigenen persönlichen Schema erstellt.

können Sie überprüfen, welche Datenbankbenutzer haben Sie und ihre Standardschema ist das, was von sys.database_principals (SQL Server 2005 und höher) Inspektion:

  • geben Sie das Schema:

    SELECT name, type_desc, default_schema_name 
    FROM sys.database_principals 
    

    dieses Problem zu lösen Sie möchten explizit (best practice anyway!) verwenden.

    CREATE TABLE dbo.T_TableName 
    
  • Änderung des Standardschema des Benutzers auf dbo

    ALTER USER [Domain\YourUser] WITH DEFAULT_SCHEMA = dbo 
    

Aber als Faustregel, empfehle ich das immer mit „dbo.“ Präfix explizit, wenn Sie alle Ihre Datenbankobjekte im DBO-Schema haben wollen. Hilft auch bei der Leistung (auch nur geringfügig), da SQL Server nicht in verschiedenen Schemas suchen muss, wenn Sie explizit angeben, wo Ihre Db-Objekte leben.

3

Nennen Sie es in SSMS dbo.T_TableName. Wenn Sie die richtigen Berechtigungen haben, wird es funktionieren.

1

Sind Sie als db_owner für die Datenbank zugewiesen, in der Sie die Tabelle erstellt haben? Wenn nicht, könnte dies das Problem sein. Versuchen Sie, Ihre Benutzerzuordnungsberechtigungen der Datenbank als solche hinzuzufügen.

USE [yourDatabase] 
GO 
EXEC sp_addrolemember N'db_owner', N'DOMAIN\UserOrGroup' 
GO 
4

Sie müssen entweder Ihre Tabelle als „dbo.Whatever“ erstellen, oder Sie benötigen eine Standardschema zu ändern (oder haben Ihre SA es für Sie tun), indem Sie einen Befehl wie Ausgabe:

ALTER USER [DOMAINNAME\UserName] WITH DEFAULT_SCHEMA = dbo; 
Verwandte Themen