Tag: sql

在SQL Server中,如何通过SQL注入来避免单引号溢出的卫生问题?

为了解决这个问题,我很清楚参数化查询是最好的select,但是我在问什么使得我现在处于弱势的策略成为可能。 人们坚持下面的解决scheme不起作用,所以我正在寻找一个为什么它不会的例子。 如果在发送到SQL Server之前使用以下转义代码构builddynamicSQL,那么什么样的注入可以击败此? string userInput= "N'" + userInput.Replace("'", "''") + "'" 这里也回答了类似的问题,但我不相信任何答案都适用于此。 在SQL Server中不能使用“\”来转义单引号。 我相信SQL走私与Unicode( 这里概述)将被阻止的事实,即正在生产的string被标记为单引号之前的N的Unicode。 据我所知,没有其他字符集,SQL Server会自动转换为单引号。 没有一个没有转义的单引号,我不相信注射是可能的。 我不相信串截断也是一个可行的载体。 SQL Server肯定不会被截断,因为根据微软 , nvarchar的最大大小是2GB。 2 GB的string在大多数情况下是不可行的,在我的情况下是不可能的。 二次注射可能是可能的,但有可能的情况是: 所有进入数据库的数据都使用上述方法进行消毒 数据库中的值永远不会附加到dynamicSQL中(为什么要这样做呢?只要引用任何dynamicSQLstring的静态部分中的表值?)。 我并不是说这比使用参数化查询更好,或者是使用参数化查询的替代方法,但是我想知道我所概括的是如何易受攻击的。 有任何想法吗?

如何正确使用SSDT和Visual Studio 2012数据库项目pipe理数据库部署?

我正在研究阶段试图在现有的小型项目上采用2012年数据库项目。 我是C#开发人员,而不是DBA,所以我不是特别stream利的最佳实践。 我一直在寻找谷歌和stackoverflow几个小时,但我仍然不知道如何正确处理一些关键的部署scheme。 1)在几个开发周期中,如何pipe理我的数据库的多个版本? 如果我在我的数据库的v3上有一个客户端,并且我想将其升级到v8,我该如何pipe理它? 我们目前为我们产品的每个版本pipe理手工架构和数据迁移脚本。 我们是否还需要单独做这件事,或者是否有新的模式支持或取代这个模式? 2)如果模式的变化需要数据移动,那么处理这个问题的最好方法是什么? 我假定Pre-Deployment脚本中有一些工作用于保存数据,然后Post-Deploy脚本将它放回正确的位置。 这是它的方式还是有更好的? 3)对于如何更好地使用这些新技术的任何其他build议或指导也非常感谢! 更新:自从我最初提出这个问题以来,我对这个问题的理解有所增加,而当我提出一个可行的解决scheme时,这并不是我所希望的解决scheme。 这里是我的问题的重新说明: 我遇到的问题纯粹是与数据有关。 如果我在我的应用程序的第一版上有一个客户端,并且我想将它们升级到我的应用程序的第五版,那么如果他们的数据库没有数据,我就不会遇到问题。 我只是简单地让SSDT智能地比较模式并一次性迁移数据库。 不幸的是客户有数据,所以并不那么简单。 架构从我的应用程序的版本1更改为版本2到版本3(等)所有影响数据。 我目前的数据pipe理策略要求我维护每个版本升级的脚本(1到2,2到3等)。 这可以防止我直接从我的应用程序版本1到版本5,因为我没有数据迁移脚本直接去那里。 为每个客户创build自定义升级脚本或者pipe理从每个版本到每个更高版本的升级脚本的前景是指数级无法pipe理的。 我所希望的是,SSDT能够实现某种策略,使事物的数据pipe理更容易,甚至可以像事物的模式一样简单。 我最近使用SSDT的经验并没有给我这样一个存在的策略的希望,但我希望有不同的发现。

什么免费的SQL格式工具存在?

我想美化我写的SQL查询。 存在哪些允许SQL查询格式化的免费工具?

Python SQL查询string格式

我试图find格式化SQL查询string的最佳方法。 当我debugging我的应用程序时,我想logging所有的sql查询string,重要的是string正确格式化。 选项1 def myquery(): sql = "select field1, field2, field3, field4 from table where condition1=1 and condition2=2" con = mymodule.get_connection() … 这对于打印sqlstring很有用。 如果string很长并且不符合80个字符的标准宽度,那么这不是一个好的解决scheme。 选项2 def query(): sql = """ select field1, field2, field3, field4 from table where condition1=1 and condition2=2""" con = mymodule.get_connection() … 这里的代码是清楚的,但是当你打印sql查询string,你会得到所有这些烦人的空白。 u'\ n从表中selectfield1,field2,field3,field4 \ n_ _ ___ \ n 其中condition1 […]

将数据库模式导出到SQL文件中

在MS SQL Server 2008可以将数据库结构导出为T-SQL文件吗? 我不仅要导出表模式,还要导出主键,外键,约束,索引,存储过程,用户定义的types/函数。 另外我不希望数据出现在这个T-SQL文件中。 有什么办法可以实现吗?

如何在SQL Server中翻转一下?

我试图在SQL Server中执行一个按位NOT。 我想要做这样的事情: update foo set Sync = NOT @IsNew 注意:我开始写这个,在我完成之前找出了我自己问题的答案。 我仍然希望与社区分享,因为MSDN上缺less这样的文档(直到我将它添加到社区内容中)。

在postgres中select行号

如何在postgres中select行号。 我试过这个: select row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum, cgcode_odc_mapping_id from access_odc.access_odc_mapping_tb order by cgcode_odc_mapping_id 并得到这个错误: 错误:语法错误处于或接近“over” 第1行:selectrow_number()over(ORDER BY cgcode_odc_mapping_id)as 我已经检查了这些页面: 如何在PostgreSQL查询中显示行号? 这是我的查询: select row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,cgcode_odc_mapping_id from access_odc.access_odc_mapping_tb order by cgcode_odc_mapping_id 这是错误的: 错误:在“over”处或附近的语法错误LINE 1:select row_number()over(ORDER BY cgcode_odc_mapping_id)as

在两个字段上使用group by,并在SQL中计数

我在我的MySQL数据库中有一个表有两列:组和子组。 见下文。 group, subGroup grp-A, sub-A grp-A, sub-A grp-A, sub-B grp-B, sub-A grp-B, sub-B grp-B, sub-B 我想获得每个独特的夫妇组/子组的logging数。 这是我所期望的: group, subGroup, count grp-A, sub-A, 2 grp-A, sub-B, 1 grp-B, sub-A, 1 grp-B, sub-B, 2 在阅读一些post后,我尝试了使用group by count()的几个sql查询,但我没有设法得到预期的结果。 我怎样才能解决这个问题?

如何在select语句中使用索引?

比方说,在employee表中,我在表的emp_name列上创build了一个索引(idx_name)。 我是否需要在select子句中明确指定索引名称,否则会自动用于加快查询速度。 如果需要在select子句中指定,那么在select查询中使用索引的语法是什么?

Join Update的MySQL语法

我有两张表,看起来像这样 培养 +———-+————-+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +———-+————-+——+—–+———+——-+ | TrainID | varchar(11) | NO | PRI | NULL | | | Capacity | int(11) | NO | | 50 | | +———-+————-+——+—–+———+——-+ 预订 +—————+————-+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra […]