Tag: SQL服务器

如何使用sql参数进行选择查询?

我需要根据一组记录的“喜欢”匹配来获取记录, 以下查询即时使用无效。 有谁知道查询有什么问题? sqlCommand.CommandText =String.Format(“SELECT * FROM Customer” + ” WHERE (Name like @Name)”,”‘%” +searchString.Trim()+”%'”); sqlCommand.Parameters.AddWithValue(“Name”, searchString); 此查询不提取所需的记录。 运行上面的代码片段时出现以下错误: Must declare the scalar variable “@Name”.

从逗号连续列表创建SQL表

我正在运行SQL Server,我有一个存储过程。 我想用WHERE IN子句做一个select语句。 我不知道列表会有多长时间,所以我现在尝试了以下内容 SELECT * FROM table1 WHERE id IN (@idList) 在这个解决方案中,@ idList是一个varChar(max)。 但这不起作用。 我听说传递表值,但我对如何做到这一点很困惑。 任何帮助都会很棒

存储过程不存在,或者存在?

我遇到了问题: 我有一个数据库连接,我在其上运行存储过程。 此相同的连接用于更早地创建所述存储过程。 当我尝试调用给定的存储过程时,稍后,我收到以下消息: 找不到存储过程’dbo.yaf_prov_upgrade’。 问题是它确实存在于数据库中。 而且还有它出现在SQL Server Profiler上的事实。 RPC:已完成exec [dbo]。[yaf_prov_upgrade] @ PreviousVersion = 46,@ NewVersion = 46 .Net SqlClient数据提供者Nico Matrix \ Nico 我想知道特定查询会抛出这样的exception的原因是什么,即使它存在,它被调用,并且调用到达数据库。 它不能成为连接的问题,因为它已经执行了其他存储过程。 它不是程序的问题,因为它确实存在,实际上是完全相同的应用程序,完全相同的网页,创建它并将其放在那里。 更新:忘了提到我使用了集成安全性,我确实使用应用程序连接的同一用户在数据库上运行SP,运行它没有问题。 那又怎样呢?

使用SQL View或SQL Query?

我正在开发一个从MS-SQL服务器获取数据的应用程序(2005)。 在命令文本中,我可以像这样传递一个sql查询: string query = “SELECT T1.f1, T1.f2, T2.f3 FROM table1 T1 join table2 T2” + “on T1.id = T2.id AND T1.dt = T2.dt …” …. cmd.CommandText = query; 我也可以将查询作为我的SQL服务器上的视图,如下所示: CREATE VIEW V1 AS “SELECT T1.f1, …” 然后我可以在这样的简化查询中使用视图: string query = “SELECT f1, f2, f3 FROM V1”; …. cmd.CommandText = query; 我不确定哪条路更好。 视图会比SQL查询更快吗? 顺便说一下,我在这里展示的查询是一个简化的查询。 实际查询SELECT比较复杂。

Azure Web应用程序缓慢的数据库连接

我开发了一个Web应用程序标准Web应用程序,允许用户显示和更新SQL数据库中的一组数据。 Web应用程序使用AngularJS客户端,它通过MVC Web API调用与Web服务器交互,以检索和更新数据库上的数据。 服务器端代码使用.NET 4.5以C#编写,并使用Entity Framework v6.0访问数据库。 Web应用程序托管在Azure Web App中。 数据库是Azure SQL数据库。 问题是,当应用程序未使用大约10-15分钟时,再次使用它,第一次数据检索通常需要10秒以上才能返回浏览器。 之后,性能良好,直到下次应用程序未使用。 我在应用程序中添加了跟踪,我们看到延迟是连接打开的时间。 数据库上的实际查询运行亚秒级。 我注意到,虽然使用不同的主机配置,我得到了不同的结果。 特别是在内部托管并指向Azure数据库不会遇到任何接近相同延迟的地方。 我已经改变了其中一个例程来使用ADO.NET而不是entity framework,并更改了跟踪以尝试进一步缩小范围。 我看到的是: ConnectionStringSettings ADOcnxstring = ConfigurationManager.ConnectionStrings[“DevFEConnectAdo”]; DbConnection ADOconnection = new SqlConnection(ADOcnxstring.ConnectionString); 延迟就在这里(在SQL定义之前! 然后我构建命令并执行DataReader等: DbCommand ADOcommand = ADOconnection.CreateCommand(); : etc 因此延迟是打开与数据库的连接。 我的连接字符串是标准的:

如果存在则更新其他插入

我想知道下一段代码是否正确: SqlCommand cmd = new SqlCommand( “IF NOT EXISTS(SELECT count(*) from Raspunsuri where id_intrebare=2)” + “Insert INTO Raspunsuri VALUES(@raspuns,@cnp,@data,2,@ip,@idsesiune)” + “else” + “UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2”, con); 所有参数都是正确的,我想插入,但似乎这段代码不做插入或更新。你有任何建议吗?这是一个结合c#的SQL查询..

ExecuteNonQuery()返回受影响的C#的意外行数

这是我的代码 // SqlCommand query = new SqlCommand(“INSERT INTO devis (idProposition, identreprise, tauxHoraire, fraisGenerauxMO, fraisGenerauxPiece, beneficeEtAleas, idStatut, prixUnitaireVenteMO ) VALUES(@idproposition, @identreprise, @tauxHoraire, @fraisGenerauxMO, @fraisGenerauxPiece, @beneficeEtAleas, 1, @prixUnitaireVenteMO) “, Tools.GetConnection()); SqlCommand query = new SqlCommand(“INSERT INTO devis (idProposition, identreprise, tauxHoraire, fraisGenerauxMO, fraisGenerauxPiece, beneficeEtAleas, idStatut, prixUnitaireVenteMO, alerteEntrepriseEnvoyee,fraisDeplacement ) VALUES(1051, 85, 20, 2, 2, 2.2, 1, 88,0,-1) “, Tools.GetConnection()); […]

在SSMS中运行良好的SQL查询在ASP.NET中运行速度非常慢

我有一个asp.net页面加载一个我们知道从SQL Server Management Studio执行时运行正常(在1到2秒内)的查询,但是当在SQLCommand中从ASP.NET执行时,查询需要的时间要长得多,我不能似乎弄清楚除了自问题开始以来已经添加到查询中的一行以外发生了什么,但我找不到问题所在。 添加的有问题的代码行是第6行: bi.INGR_CODE != 0 SQL语句 SELECT bh.JOB_NUMBER, j.DESCRIPTION, SUM(bi.INGR_ACTUAL) AS TOTAL FROM BATCH_HEADER AS bh LEFT OUTER JOIN BATCH_INGR AS bi ON bh.BATCH_ID = bi.BATCH_ID AND bh.FACTORY = bi.FACTORY AND bi.INGR_CODE 0 LEFT OUTER JOIN ServerNameReplaced.man_prod.dbo.JOBS AS j ON bh.JOB_NUMBER = j.JOB_NUMBER COLLATE database_default AND bh.FACTORY = j.FACTORY COLLATE database_default WHERE […]

如何使用变量更改sql登录密码

我正在尝试使用Alter LOGIN更新现有SQL登录的密码 我知道以下工作 ALTER LOGIN [username1] WITH PASSWORD = ‘somenewpassword123’; 但是当我尝试使用局部变量时 DECLARE @newpass nvarchar(max); SET @newpass = ‘P@ssw0rd12345’; ALTER LOGIN [username1] WITH PASSWORD = @newpass; 这失败了。 向变量添加[]大括号似乎在SSMS查询编辑器中解决了这个问题,但是在C#中使用此编程方式写出查询它失败,因为上述语句具有相同的错误(PASSWORD语法错误) c#app中的代码 public static int UpdateSqlLoginPassword(DbContext context, string loginName, string password) { try { string updatePassword = @” SET NOCOUNT ON DECLARE @loginName AS nvarchar(max) = {0} DECLARE @password […]

如何从Windows服务访问localDB

我需要在本地使用数据库。 我已经使用Visual Studio 2012在(LocalDB)\ v11.0 Server中创建了数据库。从例如控制台应用程序连接时,一切正常。 但我的应用程序是Windows服务。 尝试连接到我的数据库输出: “… The login failed.Login failed for user ‘NT AUTHORITY\SYSTEM” 这有什么解决方案吗? 也许我应该考虑为它设置其他数据库服务器? 如果是,如何设置它以便它只在本地可见?