SQL Server 데이터베이스 이름에 점을 찍어도 괜찮습니까?


27

SQL Server (2005 또는 2008)에 점이있는 데이터베이스 이름을 사용하면 "MyApp.Sales"와 같은 문제가 발생합니까?

답변:


60

당신 은 할 수 있지만 나는하지 않을 것입니다. DB 이름은 항상 [MyApp.Sales]와 같이 대괄호로 묶어야합니다.

요약하자면, 당신의 정신력을 소중히 여기더라도 그렇게하지 마십시오.


36

기술적으로 가능하더라도 매우 나쁜 생각 이라고 생각 합니다.

몇 년 동안 나는 많은 사람들이 네 부분으로 된 명명 규칙을 이해하는 데 어려움이 있음을 알았습니다.

server_name.database_name.schema_name.object_name

그들이 다음과 같은 것을 보게되면 어떻게 될지 상상해보십시오.

MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts

또는:

[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]

일을 단순하게 유지하는 것이 중요합니다.


15

다른 사람이이 질문에 직면 한 경우 ...

사용자가 혼란 스러울 수 있기 때문에 나쁜 아이디어 일뿐만 아니라 일부 도구가 혼란 스러울 수도 있다는 점을 명심하십시오.

심지어 마이크로 소프트 자체에도 문제가 있습니다. ODBC를 통해 Microsoft Query를 사용하여 데이터베이스를 Excel 시트에 연결하려고하면 연결하려는 데이터베이스를 선택할 수있는 구성 마법사가 나타납니다. 그러나 점이 포함 된 데이터베이스를 선택하면 서버를 찾을 수 없다는 오류가 발생합니다. 마법사는 값이 이스케이프해야하는지 확인하지 않고 식별자를 맹목적으로 연결하는 것으로 보입니다.

물론 해결 방법이 있지만 처음부터이 작업을 수행하지 않으면 문제를 해결할 수 있습니다.


7

데이터베이스 이름, 게시 이름, 사용자 이름에 마침표를 사용하지 마십시오. 그리고 이름 (마침표, 테이블, 뷰, 데이터베이스 등)에는 마침표를 사용하지 않는 것이 좋습니다.

업데이트 : 마이너스 대시 "-"가 simmilar 문제를 일으키는 지 확인할 수 있습니다.

다음과 같은 일이 발생합니다.

SQL Server는 시스템 저장 프로 시저와 같은 내부 사용을 위해 스크립트를 사용합니다. 여기에서 이미 언급했듯이 사용하는 명령으로 인해 이름을 대괄호로 묶어야 할 수도 있으며 저장 프로 시저 사용에 대해서는 (항상 Microsoft가 아닙니다 ) 그렇지 않습니다. .

사실 나는 더 이상 abonnement 정보를 정리할 수 없습니다 저장 프로시 저는 모든 데이터베이스를 반복하고 데이터베이스 이름을 올바르게 이스케이프하지 않기 때문에 . 이 반복은 복잡한 것이 8 개 이상의 SP에서 패치 할 수 없었습니다.

또한 MMC 또는 스크립트를 사용하여 복제 충돌을 편집 할 수 없습니다 . 이름 안에 점이있는 하나의 (One!) 데이터베이스가있는 경우 이러한 문제는 모든 출판물에서 everey db에서 발생합니다.

이것들은 내가 가진 일입니다. 복잡한 SQL 작업은 SQL 언어로 처리되며 기본이 양호하면 제대로 작동합니다.

ODBC를 통해 Microsoft Query를 사용하여 데이터베이스를 Excel 시트에 연결하려고하면 연결하려는 데이터베이스를 선택할 수있는 구성 마법사가 나타납니다. - 악 젠트

이러한 오류는 타사 소프트웨어에서 더 자주 발견 될 수 있으므로 SQL Server의 모든 이름에 점을 사용하지 마십시오.


6

이름에는 많은 문자가 허용되지만 관습과 상식은 특수 문자 사용을 제한합니다. '_'(밑줄)은 입증 된 가장 안전한 구분 기호이며 가독성을 쉽게 유지합니다.


1

같은 거래 : 외래 키 이름에는 점이 없어야합니다.

그런 이름을 바꾸려면 대괄호가 필요하다는 것을 알았습니다. sp_rename 바꾸려면 외래 키의 이름을 바꿀 때 스키마를 지정해야하기 때문에 .

예:

sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'

대괄호를 잊어 버리면 오류가 발생합니다. 15225


-1

공급 업체 중 하나가 [System.Activities.DurableInstancing] 스키마 이름을 도입하기로 결정했습니다. 데이터로드 도구가 손상되었으므로 이제 이상한 점에 대처하기 위해 추가 개발이 이루어졌습니다. 하지 마십시오. '-'를 사용하십시오.


5
-밑줄을 사용할 수 _있고 이름을 대괄호로 묶을 필요가없는 경우 대시를 사용해야하는 이유 는 무엇입니까?
ErikE

3
빼기하면 다른 유사한 문제가 발생합니다.
Daniel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.