在MSSQL SERVER2005中,如何给用户授予只有创建表、没有删除表及修改表结构的权限
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MSSQL SERVER2005中,如何给用户授予只有创建表、没有删除表及修改表结构的权限相关的知识,希望对你有一定的参考价值。
有创建表Create table权限,隐含Alter。楼主 的需求只能通过DB 触发器控制
go--举个例子
USE [master]
GO
CREATE LOGIN [Roy] WITH PASSWORD=N'1', DEFAULT_DATABASE=[Test], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [Test]
GO
CREATE USER [Roy] FOR LOGIN [Roy]
GO
USE [Test]
GO
/****** 物件: Schema [Roy] 指令码日期: 08/19/2011 09:46:15 ******/
CREATE SCHEMA [Roy] AUTHORIZATION [Roy]
go
use [Test]
GO
GRANT CREATE TABLE TO [Roy]
GO
CREATE TRIGGER tr_DBDropTable ON DATABASE
FOR DROP_TABLE,ALTER_TABLE
AS
IF ORIGINAL_LOGIN()='Roy'
BEGIN
PRINT '没权限执行 DROP TABLE'
ROLLBACK
end
GO
--以下测试,用登陆用户Roy
go
CREATE TABLE Roy.Roy(ID int)
GO
SELECT SUSER_NAME(), USER_NAME();
DROP TABLE Roy.Roy
/*
没权限执行 DROP TABLE
讯息 3609,层级 16,状态 2,行 2
交易在触发程序中结束。已中止批次。
*/ 参考技术A 这是我测试 胡写的
ALTER DATABASE studydb SET RECURSIVE_TRIGGERS on
GO
IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID=OBJECT_ID('tb') AND [type]='u')
begin
DROP TABLE tb
END
go
CREATE TABLE tb
(
testfield VARCHAjR(50)
) 参考技术B 在用户管理那里,查看用户权限,然后把不给这个用户的权限前的钩去掉,确认就OK了
如何使用 JDBC 连接到 SQL Server 2008 数据库?
【中文标题】如何使用 JDBC 连接到 SQL Server 2008 数据库?【英文标题】:How do I connect to a SQL Server 2008 database using JDBC? 【发布时间】:2011-01-27 22:57:37 【问题描述】:我在本地 PC 上安装了 MSSQL 2008,我的 Java 应用程序需要连接到 MSSQL 数据库。我是 MSSQL 的新手,我希望在为我的 Java 应用程序创建用户登录和通过 JDBC 获得连接方面获得一些帮助。到目前为止,我尝试为我的应用程序创建用户登录名并使用以下连接字符串,但我根本不工作。任何帮助和提示将不胜感激。
jdbc:jtds:sqlserver://127.0.0.1:1433/dotcms
username="shuxer" password="itarator"
【问题讨论】:
尝试使用Hibernate。如果您还没有听说过,现在是look at this tool 的好时机。广泛传播的对象关系映射 (ORM) 库。 请提供您尝试连接的代码,同时向我们提供您遇到的异常或错误 【参考方案1】:试试这个。
导入 java.sql.Connection;
导入 java.sql.DriverManager;
导入 java.sql.ResultSet;
导入 java.sql.Statement;
公共类 SQLUtil
public void dbConnect(String db_connect_string,String db_userid, 字符串 db_password)
试试
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password); System.out.println("connected"); Statement statement = conn.createStatement(); String queryString = "select * from cpl"; ResultSet rs = statement.executeQuery(queryString); while (rs.next()) System.out.println(rs.getString(1)); catch (Exception e) e.printStackTrace();
public static void main(String[] args)
SQLUtil connServer = new SQLUtil();
connServer.dbConnect("jdbc:sqlserver://192.168.10.97:1433;databaseName=myDB", “萨”, “0123”);
【讨论】:
【参考方案2】:连接到 SQL Server 的简单 Java 程序。
注意:您需要将 sqljdbc.jar 添加到构建路径中
// localhost : 本地计算机充当服务器
// 1433 : SQL 默认端口号
// 用户名:sa
//密码:使用密码,安装SQL server management studio时使用,我这里是'root'
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conn
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException
Connection conn=null;
try
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=company", "sa", "root");
if(conn!=null)
System.out.println("Database Successfully connected");
catch (SQLException e)
e.printStackTrace();
【讨论】:
【参考方案3】:你可以尝试配置SQL server:
-
第 1 步:打开 SQL server 20xx 配置管理器
步骤 2:单击 SQL 服务器配置中的 Protocols for SQL..。然后,右键单击 TCP/IP,选择属性
步骤 3:单击选项卡 IP 地址,编辑所有 TCP。端口是 1433
注意:所有 TCP 端口都是 1433 最后,重启服务器。
【讨论】:
【参考方案4】:使用JDBC主要有两种方式——使用Windows认证和SQL认证。 SQL 身份验证可能是最简单的。你可以做的是:
String userName = "username";
String password = "password";
String url = "jdbc:sqlserver://MYPC\\SQLEXPRESS;databaseName=MYDB";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url, userName, password);
将 sqljdbc4.jar 添加到构建路径之后。
对于 Window 身份验证,您可以执行以下操作:
String url = "jdbc:sqlserver://MYPC\\SQLEXPRESS;databaseName=MYDB;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url);
然后将 sqljdbc_auth.dll 的路径添加为 VM 参数(在构建路径中仍然需要 sqljdbc4.jar)。
如果您需要更多详细信息,请查看here 了解如何使用 jTDS 和 JDBC 从 Java 连接到 SQL Server 的简短分步指南。希望对您有所帮助!
【讨论】:
请注意jar文件应该放在类路径中【参考方案5】:您可以使用this:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ConnectMSSQLServer
public void dbConnect(String db_connect_string,
String db_userid,
String db_password)
try
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(db_connect_string,
db_userid, db_password);
System.out.println("connected");
Statement statement = conn.createStatement();
String queryString = "select * from sysobjects where type='u'";
ResultSet rs = statement.executeQuery(queryString);
while (rs.next())
System.out.println(rs.getString(1));
catch (Exception e)
e.printStackTrace();
public static void main(String[] args)
ConnectMSSQLServer connServer = new ConnectMSSQLServer();
connServer.dbConnect("jdbc:sqlserver://<hostname>", "<user>",
"<password>");
【讨论】:
【参考方案6】:我也在使用 mssql server 2008 和 jtds。在我的情况下,我使用以下连接字符串并且它可以工作。
Class.forName( "net.sourceforge.jtds.jdbc.Driver" );
Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://<your server ip
address>:1433/zacmpf", userName, password );
Statement stmt = con.createStatement();
【讨论】:
【参考方案7】:如果您在连接时遇到问题,很可能是您尚未在端口 1433 上启用 TCP/IP 侦听器。快速的“netstat -an”命令会告诉您它是否正在侦听。默认情况下,SQL Server 安装后不会启用此功能。
此外,您需要在“sa”帐户上设置密码并启用“sa”帐户(如果您打算使用该帐户进行连接)。
显然,这也意味着您需要在您的 MSSQL 节点上启用“混合模式身份验证”。
【讨论】:
【参考方案8】:尝试这样使用:jdbc:jtds:sqlserver://127.0.0.1/dotcms;实例=实例名称
不知道你用的是哪个版本的mssql,如果是express版,默认实例是sqlexpress
不要忘记检查 SQL Server Browser 服务是否正在运行。
【讨论】:
以上是关于在MSSQL SERVER2005中,如何给用户授予只有创建表、没有删除表及修改表结构的权限的主要内容,如果未能解决你的问题,请参考以下文章
MS SQL Server 2005 中的 LIMIT 样式功能
MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重
记一次 windows server 2012R2 上安装 MSSQL2005 及网站发布