2013-09-20 5 views
1

Как это link говорят, что схема и база данных могут быть такими;Схема и база данных в sql-сервере

schema : database : table :: floor plan : house : room.

Но это должно быть так;

database : schema : table :: house : floor plan: room.

Какой именно? Я использовал второй вариант:

exec xp_cmdshell 'bcp "select * from test2.dbo.test" queryout I:\File\mytest.xlsx -c -t -T -S YAMUNA\SQLEXPRESS'

Здесь база данных: test2; схема: dbo; и таблица: test

+0

Концепции немного отличаются между Sql Server и (Oracle/MySQL). Вам нужно указать более конкретный RDMBS. – granadaCoder

+0

Эта ссылка действительно не говорит о синтаксисе sqlserver. Это даже не говорит о схеме, как это использует sqlserver. Это совсем не актуально. Замените схему на модель базы данных, и она должна быть понятной как «модель базы данных: база данных: таблица» – Hogan

ответ

2

Игнорируйте эту ссылку, это не говорит о соглашениях об адресации объектов SQL Server. Кроме того, они говорят о традиционном/формальном значении «Схемы», который «имеет любой реляционный дизайн данных», тогда как в SQL Server «Схема» обычно является короткой для «Owner-Schema», которая является определенным типом объекта безопасности ,

Скорее, он делает аналогию об уровнях или элементах реляционного дизайна. Символом «:» в этом случае является относительная связь одного понятия с другим, а «::» - это символ «Аналогия».

So schema:database:table :: floor plan:house:room просто означает «взаимосвязь между схемой, базами данных и таблицами аналогична взаимосвязи между планами этажей, домами и помещениями». (Существует более общий и лаконичный способ сказать это на английском языке, но он, как правило, вводит в заблуждение не-носители)

Обратите внимание, что конкретный порядок этих понятий не имеет значения, если их соответствующие элементы (схема-план этажа, база данных, комнатный стол) имеет такое же относительное местоположение. Таким образом, schema:database:table :: floor plan:house:room - это то же самое, что и database:schema:table :: house:floor plan:room.

1

Правильный ответ schema : database : table :: floor plan : house : room. Дом (база данных) может содержать много этажей, а затем много планов этажей (схема). В каждом этаже могут быть несколько комнат (столов), которые являются уникальными для этого этажа.

DBO особенный в том, что это схема владельца базы данных. В эту базу данных можно добавить другую схему.

1

Код, приведенный ниже: blog article Я написал на использование BCP для сброса данных.

Вот некоторые примечания, которые отличаются от того, что у вас есть.

1 - Путь должен быть отправлен на bcp, поскольку он может быть не найден.

2 - Я заметил, что вы добавили расширение * .xlsx, хотя это формат с разделителями-запятыми (csv). Я предлагаю использовать расширения * .csv.

3 - Кроме того, вам необходимо указать символ после переключателя -t, 'delimiter. Ниже используется шестнадцатеричное значение. В этом примере используется запятая.

4 - И последнее, но не менее важное: я видел, что вас не хватает "" вокруг имени файла.

Устраните эти неполадки и повторите попытку. Если до сих пор нет кубиков. Используйте мой код, который создает строку.Используйте команду PRINT.

Попробуйте выполнить вызов из командной строки. Если он не работает, он не будет работать на SQL-сервере.

Удачи.

Джон Майнер

www.craftydba.com

PS: Если все еще есть проблемы, опубликовать вывод выполнения команды.

PPS: Схема должна быть уже установлена ​​для существующей базы данных. Просто спросите DBA для синтаксиса, если вы не случайно DBA?

-- BCP - Export query, pipe delimited format, trusted security, character format 
DECLARE @bcp_cmd4 VARCHAR(1000); 
DECLARE @exe_path4 VARCHAR(200) = 
    ' cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn\ & '; 
SET @bcp_cmd4 = @exe_path4 + 
    ' BCP.EXE "SELECT FirstName, LastName FROM AdventureWorks2008R2.Sales.vSalesPerson" queryout ' + 
    ' "C:\TEST\PEOPLE.TXT" -T -c -q -t0x7c -r\n'; 
PRINT @bcp_cmd4; 
EXEC master..xp_cmdshell @bcp_cmd4; 
GO 
Смежные вопросы