小编Cad*_*oux的帖子

如何将巨大(但简单)的分层XML文件加载到SQL表中

我有一个非常大的(2.5GB,55百万节点)XML文件,格式如下:

<TopNode>
    <Item id = "Something">
         <Link>A link</Link>
         <Link>Another link</Link>
         <Link>One More Link</Link>
    </Item>
    <Item id = "Something else">
         <Link>Some link</Link>
         <Link>You get the idea</Link>
    </Item>
  </TopNode>
Run Code Online (Sandbox Code Playgroud)

我想将其扁平化为以下SQL表:

 -----------------------------------------
 |  Item          |          Link        |
 -----------------------------------------
 | Something      |  A link              |
 | Something      |  Another link        |
 | Something      |  One More Link       |
 | Something Else |  Some Link           |
 | Something Else |  You get the idea    |
 |----------------|----------------------|
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL2008,如果这有所作为.

什么是最简单,最有效的方法(最好使用SQL Server/.NET堆栈)从A点到B点,记住涉及的文件大小?

.net xml sql sql-server sql-server-2008

4
推荐指数
1
解决办法
1004
查看次数

SQL:View of Table - 是否仍在使用表索引查看View?

我正在对我的表("用户")使用视图("UsersActive").该视图只有一个过滤器,它检查DateTime Users.DeletedOn是否为NULL; 它基本上包含所有未删除的用户.

如果我现在对视图而不是表执行Linq查询,它们是否仍然使用表索引或者我是否需要为视图创建特殊索引?在我的理解中,View只不过是一个预定义的查询,应该就像我直接查询它一样:

SELECT*FROM Users WHERE DeletedON = NULL

我的假设是基础表的索引仍然会被正确使用吗?

sql t-sql view

4
推荐指数
1
解决办法
925
查看次数

有没有办法从变量中选择数据库?

有没有办法从变量中选择数据库?

Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
Run Code Online (Sandbox Code Playgroud)

sql sql-server dynamic-sql

4
推荐指数
1
解决办法
696
查看次数

您的数据库应用程序应该在存储过程中有多少?

我正在为数据库应用程序编写第二个接口,以解决原始接口的一些缺点.不幸的是,如果我创建新记录,则不会生成预期的审计跟踪记录.如果数据库设计已经将这些细节用于表触发器,那么肯定会很好,或者为诸如将新记录插入这些表之类的操作提供存储过程API.

应用程序应该以这种方式设计吗?存储过程中应该有多少数据库应用程序?

architecture rdbms database-design stored-procedures

4
推荐指数
2
解决办法
455
查看次数

无法在SQL Server中向空表添加"NOT NULL"列

我知道在向包含SQL Server中的数据的表中添加列时,该列必须具有NULL选项或默认值.否则SQL Server会用新的行填充什么?

我不知道为什么我不能在空表中添加NOT NULL列.我已经在两个SQL 2008实例和一个SQL 2005实例上尝试了这个,没有任何问题.但是,使用SQL 2000的客户确实存在此问题.这是与SQL 2000相关还是可以关闭的选项.我们希望这是一个选择.

Select @@Version
Run Code Online (Sandbox Code Playgroud)

Microsoft SQL Server 2000 - 8.00.760(Intel X86)2002年12月17日14:22:05版权所有(c)1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.1(Build 2600:Service Pack 3)

Select count(*) from actinv

0

ALTER TABLE [ActInv] ADD [BATCHNUMBER] NVARCHAR(50) NOT NULL
Run Code Online (Sandbox Code Playgroud)

消息4901,级别16,状态1,行1 ALTER TABLE仅允许添加可包含空值或指定了DEFAULT定义的列.列'BATCHNUMBER'无法添加到表'ActInv'中,因为它不允许空值并且不指定DEFAULT定义.

sql-server null ddl sql-server-2000

4
推荐指数
1
解决办法
2万
查看次数

有多少数据库表列太多了?

我已经接管了一个项目,它有一个包含超过30列的用户表.糟糕的是,列的更改和添加不断发生.

这不对.

我应该推动将额外的字段作为值移动到第二个表中并创建存储这些列名的第三个表吗?

user
    id
    email

user_field
    id
    name

user_value
    id
    user_field_id
    user_id
    value
Run Code Online (Sandbox Code Playgroud)

mysql database-design entity-attribute-value

4
推荐指数
1
解决办法
1404
查看次数

server.Databases [的databaseName] .Drop(); 在MSTest失败

抛出以下异常:

错误消息:Microsoft.SqlServer.Management.Smo.FailedOperationException:数据库'4d982a46-58cb-4ddb-8999-28bd5bb900c7'的删除失败.---> Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常.---> System.Data.SqlClient.SqlException:无法删除数据库"4d982a46-58cb-4ddb-8999-28bd5bb900c7",因为它当前正在使用中.

知道是什么导致了这个吗?

是否可以调用SMO函数来完成任何正在运行的Transact-SQL语句?

.net c# smo sql-server-2005

3
推荐指数
1
解决办法
2036
查看次数

sql检测更新触发器中修改的字段(sql server 2005)?

在sql server 2005中,在更新触发器内部有一种方法可以找到原始更新查询修改的字段列\列.

我有一个包含150列的表,如果只更新了一个特定字段,则触发器内部需要知道(并且没有其他字段被修改)

我可以写一个很长的SQL来比较150列,但它会容易出错并且看起来很愚蠢!

任何体面的解决这个问题的方法.我希望有一些sql2005 api会来救我.

sql sql-server triggers sql-server-2005

3
推荐指数
1
解决办法
4676
查看次数

在T-SQL中确定"本周"

这是美国特有的区域,其中认为一周的开始是星期日; 我希望能够让SQL给我一个相对于今天的下一个星期日的日期[getDate()].如果今天是1月15日,它将于1月18日返回; 如果今天是星期天,它应该返回下一个星期日,即25日.这对于编写UDF来说是微不足道的,但我很好奇是否有其他人有其他技巧/想法?

sql t-sql sql-server

3
推荐指数
1
解决办法
1983
查看次数

如果集合为空,FETCH INTO 不会引发异常,不是吗?

这是我正在尝试调试的一些实际代码:

BEGIN
            OPEN bservice (coservice.prod_id);

            FETCH bservice
            INTO  v_billing_alias_id, v_billing_service_uom_id, v_summary_remarks;

            CLOSE bservice;

            v_service_found := 1;
        -- An empty fetch is expected for some services.
        EXCEPTION
            WHEN OTHERS THEN
                v_service_found := 0;
        END;
Run Code Online (Sandbox Code Playgroud)

当参数化游标 bservice(prod_id) 为空时,它会将 NULL 提取到三个变量中,并且不会引发异常。

那么编写这段代码并期望它抛出异常的人都是错误的,对吗?该注释似乎暗示着空获取是预期的,然后它设置一个标志以供以后处理,但我认为这段代码也不可能用空集进行测试。

显然,它应该使用 bservice%NOTFOUND 或 bservice%FOUND 或类似的。

oracle plsql exception cursor

3
推荐指数
1
解决办法
9233
查看次数