Tag: sql server

如何解决Azure“此版本的SQL Server不支持Windows登录”?

当我尝试连接到SQL Azure时,我收到以下错误消息。 此版本的SQL Server不支持Windows登录 我正在使用Azure连接字符串。 在开发时我正在运行SQL Server Express。 当我尝试从数据库中获取某些数据时,会抛出此特定错误。 我正在使用的上下文在using子句中运行,请参见下文 function List GetList(string dbContextName) { using (MyDbContext context = new MyDbContext) { return context.SomeTypes.ToList(); } } 我们使用的是Entity Framework 4.2版,ASP.NET MVC 3和.NET 4.0。 我该如何解决这个问题?

是否可以使用SqlParameters获取SqlCommand的已解析文本?

我要做的是创建一些带参数的任意sql命令,设置参数的值和类型,然后返回解析的sql命令 – 包含参数。 我不会直接对sql数据库运行此命令,因此不需要连接。 因此,如果我运行下面的示例程序,我希望看到以下文本(或类似的东西): WITH SomeTable (SomeColumn) AS ( SELECT N’:)’ UNION ALL SELECT N’>:o’ UNION ALL SELECT N’^_^’ ) SELECT SomeColumn FROM SomeTable 示例程序是: using System; using System.Data; using System.Data.SqlClient; namespace DryEraseConsole { class Program { static void Main(string[] args) { const string COMMAND_TEXT = @” WITH SomeTable (SomeColumn) AS ( SELECT N’:)’ […]

将用户输入的搜索查询转换为where子句,以便在SQL Server全文搜索中使用

将用户输入的搜索词转换为可用于where子句进行全文搜索以查询表并获取相关结果的查询的最佳方法是什么? 例如,用户输入以下查询: +”e-mail” +attachment -“word document” -“e-learning” 应该翻译成: SELECT * FROM MyTable WHERE (CONTAINS(*, ‘”e-mail”‘)) AND (CONTAINS(*, ‘”attachment”‘)) AND (NOT CONTAINS(*, ‘”word document”‘)) AND (NOT CONTAINS(*, ‘”e-learning”‘)) 我目前正在使用查询解析器类 ,它使用正则表达式将用户输入的查询解析为标记,然后从标记构造where子句。 但是,鉴于这可能是许多使用全文搜索的系统的常见要求,我很好奇其他开发人员如何处理这个问题,以及是否有更好的做事方式。

在SQL Server Management Studio中快速从C#运行时,SQL查询超时

我有一个C#程序,使用下面列出的代码执行SQL查询。 我已经使用这段代码一段时间没有问题,直到前几天。 我将查询字符串传递给SQL,其中包含一个字符串列表,这些字符串是库存标识符。 几天前我运行它,查询超时,如果我让它运行一个多小时。 我花了这么多天试图调试这个。 在我的原始查询中,大约有900个标识符。 我已经尝试过改变我能想到的一切,但我得到了无法解释的结果。 例如: 查询使用一个股票列表,但不能使用另一个字符串和总长度相同的长度列表 它适用于一个列表,但不能以相反的顺序使用相同的列表 有一个列表,如果有正好900个标识符,它可以工作,但如果有899或901则不行,我可以包含或排除不同的标识符并获得相同的结果,因此它不是一个标识符之一的时髦。 在每种情况下,我都捕获了我的程序传递的查询字符串并将其复制到SQL Server Management Studio中,并且在每种情况下,查询都会在1秒内运行。 我已经在这个和其他论坛上阅读了关于在SQL Server Management Studio中工作但在从程序运行时超时的所有内容,但这似乎有所不同,因为我可以找到失败的情况和类似的情况工作。 我希望看到我可能会看到可能发生的事情的建议。 using (SqlConnection conn = new SqlConnection(_connectString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(queryString, conn)) { cmd.Parameters.Clear(); cmd.CommandTimeout = _timeout; SqlParameter param; if (parms != null) { foreach (string parm in parms.Keys) { param = […]

获取表的架构

给定一个SQLConnection对象,如何获得单个表的模式? 前几天我正在尝试这个,我似乎能够从运行查询得到的DataSet中获取模式,但是我从连接中获得的所有模式信息似乎都与可用的表有关而不是表格的实际细节。 我确信有一种简单的方法可以做到这一点。

如何给出ADO.NET参数

我想创建一个向DB添加记录的SQL命令。 我尝试了以下代码,但它似乎没有工作: SqlCommand comand = new SqlCommand(“INSERT INTO Product_table Values(@Product_Name,@Product_Price,@Product_Profit,@p)”, connect); SqlParameter ppar = new SqlParameter(); ppar.ParameterName = “@Product_Name”; ppar.Value = textBox1.Text; MessageBox.Show(“Done”); comaand.Parameters.Add(ppar);

在SQL Server中生成看似随机的唯一数字ID

我需要使用SQL Server生成看似随机的唯一8位数字 ID(可以在前面填充零)。 这是否有内置function? 我看到了这个 Identity属性,但它是顺序的,而不是随机的。 如果这是不可能的,那么直接将随机生成的ID写入db然后检查exception是不错的做法? (请注意,我的应用程序是multithreading的,因此在写入之前进行检查并不能保证唯一性,除非在primefaces操作中完成。) 谢谢! 更新:添加“数字”以澄清。 编辑表明随机性不需要加密强或任何接近。 看似随意就好了。 奥利弗提出了一个优雅的解决方案,我已经使用这种方法发布了答案。 谢谢,奥利弗!

由于没有Sqlserver数组参数,最好的方法是什么?

我需要在sqlserver中创建多个记录,每个记录在列A中具有相同的值,但在列B中具有唯一值。我在列中具有列B的值。 我正在使用VS2008,aspnet,c#3.5,sqlserver 2005。 我最好过 选项1。 从c#代码中调用sqlserver中的存储过程,然后在tsql中执行存储过程中的所有处理工作? 这将涉及将c#数组中的所有值组合成一个逗号分隔的字符串,并将字符串作为参数传递给tsql,然后循环并将字符串拆分为单个值并为每个值插入记录,所有这些都在存储过程中。 从我所看到的,如果需要,这将涉及轻松回滚,但在tsql中非常笨拙的字符串处理。 要么 选项2。 在c#中循环并将数据作为sqlparams从c#一次传递到存储过程以插入每个记录。 即,foreach(myarray中的int键)…插入一条记录 我可以在睡眠中执行此代码,但如果在处理过程中发生了某些事情,我将如何能够回滚? 我应该在一个单独的connection.open和connection.close中进行循环吗? 这样做有没有其他选择?

无法从文件连接到数据库

我尝试连接:Microsoft SQL Server数据库文件(SqlClient),但我收到错误: 尝试连接到数据库失败,并显示以下信息:与SQL Server建立连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:52 – 无法找到本地数据库运行时安装。validation是否已正确安装SQL Server Express并且已启用本地数据库运行时function。) 所以,我在服务器资源管理器中单击连接到数据库 这个窗口出现了。 我在其中选择:Microsoft SQL Server数据库文件(SqlClient)然后浏览我的.mdf数据库文件。 单击确定会出现前面提到的错误: 服务器正在运行,我在数据库中使用Windows身份validation。 任何sugestions?

C#SQLConnection池

任何人都可以向我简要介绍如何在ADO.Net中进行连接池,我需要连接到3个独立的数据库。 其中2个在同一服务器中,另一个在另一个服务器中。 更好的代码片段..