Tag: sql server

添加连接时,Visual Studio不显示服务器名称

我正在使用Visual Studio 2010和SQL Server 2012.当我尝试通过Visual Studio连接到SQL Server时,我没有在添加连接下拉菜单中获取我的服务器名称。

防止审计表篡改

我们的数据库中有审计表。 使用触发器完成对此表的记录。 目前,没有什么能阻止用户登录数据库服务器,从管理工作室打开表并更改审计表中的数据。 哪些可能的机制可以防止(或至少检测)审计数据篡改的情况? 我正在考虑在审计表中添加一列,其中应包含根据在该行中输入的值计算的一些哈希值。 但是,由于审计是使用触发器完成的,因此恶意用户可以打开任何触发器并查看计算此哈希的逻辑。 编辑: 我不太清楚。 应用程序用户无权访问数据库。 我指的是像DB管理员这样的用户,对数据库拥有适当的权限。 尽管如此,如果这个数据库管理员登录并有权使用审计表进行调节,我希望至少有一些机制来检测这种篡改。

从c#到SQL Server的批量插入策略

在我们当前的项目中,客户将向我们的系统发送复杂/嵌套消息的集合。 这些消息的频率约为。 1000-2000 msg /每秒。 这些复杂对象包含事务数据(要添加)以及主数据(如果未找到则将添加)。 但客户不是传递主数据的ID,而是传递“名称”列。 系统检查这些名称是否存在主数据。 如果找到,它将使用数据库中的ID,否则首先创建此主数据,然后使用这些ID。 解析主数据ID后,系统会将事务数据插入SQL Server数据库(使用主数据ID)。 每条消息的主实体数量约为15-20。 以下是我们可以采用的一些策略。 我们可以首先从C#代码中解析master ID(如果没有找到则插入主数据)并将这些ID存储在C#cache中。 解决所有ID后,我们可以使用SqlBulkCopy类批量插入事务数据。 我们可以访问数据库15次以获取不同实体的ID,然后再次命中数据库以插入最终数据。 我们可以使用相同的连接在完成所有这些处理后关闭它。 我们可以将包含主数据和事务数据的所有这些消息一次性发送到数据库(以多个TVP的forms),然后在内部存储过程中,首先为缺失的数据创建主数据,然后插入事务数据。 有人可以建议这个用例的最佳方法吗? 由于一些隐私问题,我无法分享实际的对象结构。 但这是假设的对象结构,它非常接近我们的业务对象 。 一条此类消息将包含有关一个产品(其主数据)的信息以及来自不同供应商的价格详细信息(交易数据): 主数据(如果未找到则需要添加) 产品名称:ABC,ProductCateory:XYZ,制造商:XXX和其他一些细节(属性数量在15-20范围内)。 交易数据(将始终添加) 供应商名称:A,ListPrice:XXX,折扣:XXX 供应商名称:B,ListPrice:XXX,折扣:XXX 供应商名称:C,ListPrice:XXX,折扣:XXX 供应商名称:D,ListPrice:XXX,折扣:XXX 对于属于一个产品的消息,大多数有关主数据的信息将保持不变(并且将更改频率更低),但交易数据将始终波动。 因此,系统将检查系统中是否存在产品“XXX”。 如果没有,请检查本产品中提到的“类别”是否存在。 如果没有,它将为类别插入新记录,然后为产品插入新记录。 这将针对制造商和其他主数据进行。 多个供应商将同时发送有关多个产品(2000-5000)的数据。 因此,假设我们有1000个供应商,每个供应商都在发送大约10-15种不同产品的数据。 每2-3秒后,每个供应商都会向我们发送这10个产品的价格更新。 他可能会开始发送有关新产品的数据,但这种情况并不常见。

从SQL Server表中删除一行

我试图使用按钮事件从我的SQL Server数据库表中删除一整行。 到目前为止,我的尝试都没有成功。 这就是我想要做的: public static void deleteRow(string table, string columnName, string IDNumber) { try { using (SqlConnection con = new SqlConnection(Global.connectionString)) { con.Open(); using (SqlCommand command = new SqlCommand(“DELETE FROM ” + table + ” WHERE ” + columnName + ” = ” + IDNumber, con)) { command.ExecuteNonQuery(); } con.Close(); } } catch (SystemException […]

使用LINQ模拟SQL Server 2012延迟窗口function

我有一些样本数据看起来像:(编辑:我没有SQL Server 2012) create table #base (pat_id int ,admission_date date ,discharge_date date ) go insert into #base values (1, ‘2007-01-04’, ‘2007-01-04’), (1, ‘2007-01-10’, ‘2007-01-10’), (1, ‘2007-01-11’, ‘2007-01-11’), (1, ‘2007-01-18’, ‘2007-01-18’), (1, ‘2007-01-24’, ‘2007-01-24’), (1, ‘2008-01-25’, ‘2008-01-26’), (2, ‘2007-02-01’, ‘2007-02-01’), (2, ‘2007-02-06’, ‘2007-02-06’), (2, ‘2007-02-07’, ‘2007-02-07’), (2, ‘2007-02-08’, ‘2007-02-08’) 这是我希望用LINQ模拟的SQL查询 ;with cte as ( select pat_id […]

创建LocalDB以便从Visual Studio SQL项目进行测试

我正在尝试为我的项目创建集成测试。 我需要测试一个通过存储库调用存储过程的控制器。 应在每个特定测试范围的运行中创建一个空数据库。 所以我将实现以下步骤: 创建LocalDB 运行一些预脚本(添加测试数据) 运行测试 运行一些Post脚本(如果需要在此数据库上运行其他测试) 删除LocalDB 在我的解决方案中,我有.sqlproj与所有表和SP。 如何使用与C#代码中的.sqlproj相同的结构创建LocalDB ? 或者如何生成包含所有对象的脚本以在LocalDB上运行它? 在.sqlproj bin文件夹中存在MyProjectName_Create.sql,但它不在cmd.ExecuteNonQuery();运行cmd.ExecuteNonQuery(); 任何帮助/建议将不胜感激。 谢谢 PS相关问题是如何在DacServices.Deploy()中禁用预部署和部署后脚本

从SQL Server获取列名称

我正在尝试获取我存储在SQL Server 2008 R2中的表的列名。 我真的尝试了一切,但我似乎无法找到如何做到这一点。 现在这是我在C#中的代码 public string[] getColumnsName() { List listacolumnas=new List(); using (SqlConnection connection = new SqlConnection(Connection)) using (SqlCommand command = connection.CreateCommand()) { command.CommandText = “SELECT TOP 0 * FROM Usuarios”; connection.Open(); using (var reader = command.ExecuteReader(CommandBehavior.KeyInfo)) { reader.Read(); var table = reader.GetSchemaTable(); foreach (DataColumn column in table.Columns) { listacolumnas.Add(column.ColumnName); } } } […]

Crystal报告 – 关闭数据库连接

这是在C#,Visual Studio 2008,VS2008附带的水晶报告中 我有一个位于DLL中的水晶报表查看器表单。 DLL负责加载水晶报告(基于报告文件名),并在表单上显示报告。 当我完成水晶报告时,我在已加载的reportdocument对象上调用dispose。 但是,数据库连接仍然存在。 Crystal似乎检测到有其他连接(从我的主应用程序)到同一个数据库,并保持其连接打开。 关闭主应用程序数据库连接时,晶体连接将关闭。 有没有办法强制晶体关闭它的连接,而没有关闭主应用程序数据库连接?

有什么方法可以在Sql Profiler或类似的工具中获得.net堆栈跟踪?

在我之前的工作中,我设计并帮助构建了一个运行时(生产) Profiler工具 ,除了其他很酷的function之外,它还能够为每个执行的SQL语句提供.Net堆栈跟踪。 将其视为类固醇上的SQL-Server Profiler。 因此,您不仅可以看到SQL语句和持续时间,还可以获得执行SQL的上下文。 在开发以数据库为中心的应用程序时,我发现此信息是上帝发送的。 问题是,由于这是开发的,我以前的公司已被赛门铁克收购,虽然该工具仍可下载,但很不清楚许可是什么,而且不是SKU Symnatec正在销售的。 我想知道是否有人知道任何类似的工具会给我堆栈跟踪我的SQL语句执行? alt截图http://img151.imageshack.us/img151/4357/profiler1jz3.gif 这仍然没有答案,ANTS等人不这样做,只考虑回答否并接受它。

如何将巨大的虚拟数据插入到Sql server

目前开发团队已完成其应用程序,并且作为测试人员需要在20个表中插入1000000条记录,以进行性能测试。 我经历了表格,实际上所有表格之间存在关系。 要将那么多虚拟数据插入到表中,我需要在很短的时间内完全理解应用程序,这样我就不会有这样的虚拟数据了。 在SQL server中有任何方法可以插入这么多的数据插入可能性。 请分享方法。 目前我正在计划在excel中创建虚拟数据的可能性,但在这里我不确定表之间的关系。 在谷歌中发现SQL分析器将提供执行顺序,但等待访问分析这个。 我在Google中发现的另一件事是可以使用红门工具。 是否有任何脚本或任何其他解决方案以简单的方式执行此任务。 如果这是一个常见问题,我很抱歉,我是第一次在SQL实时场景中工作。 但我对SQL有所了解。