2014-01-08 22 views
7

abc-123のようなハイフンでSQL Serverデータベース名を指定できますか?

select * from abc-123.emp;
のように実行すると、結果が得られるテーブルEmpを作成したという意味で、 abc-123という名前のSQL Serverデータベースを作成しました。 しかし、私はそれを行うことができないユーザーにいくつかの特権を付与しようとしているときに、 ハイフンの近くに構文エラーが表示されます。

いずれかが私を助けますか?

+0

あなたが使用する必要がありますか - ?アンダースコア '_'がより一般的に使用されます。 –

答えて

20

[](T-SQL)または ""(ANSI SQL)で名前をエスケープしていることを確認してください。標準以外の命名を使用しています。

-- Sample select 
SELECT * FROM [abc-123].[dbo].[emp]; 
SELECT * FROM "abc-123"."dbo"."emp"; 

1 - 私に許可のTSQLの例を教えてもらえますか? SSMSからアクションを実行する場合は、コードを右クリックしてスクリプトを作成します。

2 - ここにGRANT TSQLコマンドへのリンクがあります。私はあなたが試みているような構文を見ません。

http://technet.microsoft.com/en-us/library/ms188371.aspx

TO 'drupal'@'localhost' IDENTIFIED BY '[email protected]'; 

まず、それが[[email protected]]する必要があります。第二に、私はIDENTIFIED BY節を見たことがありません。その情報をどこから入手していますか?

3 - 悪質な名前のデータベースとユーザーを作成するクイックTSQLスクリプトです。可能であれば、データベースとユーザーの名前を変更します。

また、db_owner以外のテーブルレベル(非常にきめ細かくメンテナンスが多い)で権限を付与する場合は、ユーザー定義のデータベースロールを作成します。役割にセキュリティ保護を追加し、ユーザーを役割に追加します。

http://technet.microsoft.com/en-us/library/ms187936.aspx

サンプルコード。

-- Create new database 
create database [abc-123] 
go 

-- Use new database 
use [abc-123]; 
go 

-- Create table from sample data 
select 
     [BusinessEntityID] 
     ,[PersonType] 
     ,[NameStyle] 
     ,[Title] 
     ,[FirstName] 
     ,[MiddleName] 
     ,[LastName] 
     ,[Suffix] 
     ,[EmailPromotion] 
     , cast([AdditionalContactInfo] as varchar(max)) 
     as [AdditionalContactInfoTxt] 
     , cast([Demographics] as varchar(max)) 
     as [DemographicsTxt] 
     ,[rowguid] 
     ,[ModifiedDate] 
into 
     [abc-123].[dbo].[emp] 
from 
     AdventureWorks2012.Person.Person; 

-- Create a login 
CREATE LOGIN [[email protected]] WITH PASSWORD=N'Ja08n13$', DEFAULT_DATABASE=[abc-123] 
GO 

-- Create a user 
CREATE USER [[email protected]] FOR LOGIN [[email protected]] WITH DEFAULT_SCHEMA=[dbo] 
GO 

-- Add to database owner role 
EXEC sp_addrolemember 'db_owner', [[email protected]] 
GO 

db_ownerグループでユーザーと出力します。

enter image description here

+0

'drupal' @ 'localhost' 'Drup @ l' IDENTIFIED BY;ドリルアップ、削除、作成、削除、インデックス変更、abc-xyz。私はこのようにしています –

+0

abc-xyz。*をALLに変更してください。 –

+0

@CRAFTY、 'schema [dbo]' nameを使用しないと 'Invalid object name'エラーが発生します。 –

0

あなたがテーブル名とデータベース名を使用している場合は、その後もschema名を指定すると仮定します。データベース名ラウンド

select * from [abc-123].dbo.emp

1

使用[]

SELECT * FROM [abc-123].[dbo].emp; 

OR

SELECT * FROM [abc-123].dbo.emp; 
+0

ありがとうございました –