1

正如这个链接所说,架构和数据库可以是;

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

4

3 回答 3

2

忽略该链接,它不是在谈论 SQL Server 对象寻址约定。另外,他们正在谈论“架构”的传统/正式含义,即“任何关系数据设计”,而在 SQL Server 中,“架构”通常是“所有者架构”的缩写,它是一种特定类型的安全对象。

相反,它是在对关系设计的层次或元素进行类比。在这种情况下,“:”符号是一个概念与另一个概念的相对关系,“::”是类比符号。

所以schema:database:table :: floor plan:house:room只是意味着“模式、数据库和表之间的关系类似于平面图、房屋和房间之间的关系”。(用英语有一种更常见和更简洁的表达方式,但对于非母语人士来说往往会感到困惑)

请注意,这些概念的具体顺序无关紧要,只要它们对应的元素(schema-floor plan、database-house、room-table)具有相同的相对位置即可。所以schema:database:table :: floor plan:house:room是一样的database:schema:table :: house:floor plan:room

于 2013-09-20T13:29:41.527 回答
1

正确答案是schema : database : table :: floor plan : house : room。一个房子(数据库)可以包含许多楼层,随后可以包含许多平面图(模式)。在每个楼层内,可以有多个该楼层独有的房间(桌子)。

DBO 的特殊之处在于它是数据库所有者的模式。可以将其他模式添加到该数据库。

于 2013-09-20T13:36:14.283 回答
1

下面的代码来自我写的一篇关于使用 BCP 转储数据的博客文章。

这里有一些与你所拥有的不同的事情需要注意。

1 - 应该将路径提供给 bcp,因为它可能找不到。

2 - 我注意到您放置了 *.xlsx 扩展名,即使它是逗号分隔值 (csv) 格式。我建议使用 *.csv 扩展名。

3 - 此外,您需要在“-t”分隔符开关后提供一个字符。下面使用十六进制值。此处的示例使用逗号。

4 - 最后但并非最不重要的一点是,我看到您在文件名周围缺少“”。

请解决这些问题,然后重试。如果仍然没有骰子。使用我创建字符串的代码。使用打印命令。

尝试从命令行调用。如果它在那里不起作用,它将在 SQL Server 中不起作用。

祝你好运。

约翰·米纳

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
于 2013-09-20T14:00:50.090 回答