2

我无法让我的简单 grails 应用程序通过我创建的用户向我的表中执行插入操作,即使我能够在 SQl 管理工作室中运行查询就好了。

我收到此错误:

The INSERT permission was denied on the object 'mini_user', database     'Mini_test', schema 'dbo'

InvalidDataAccessResourceUsageException: could not insert: [com.grailsinaction.MiniUser]; SQL [insert into mini_user (version, date_created, password, profile_id, user_id) values (?, ?, ?, ?, ?)];

我能够在管理工作室中运行上述查询而不会出现任何错误。

这是我的 Grails 配置,尽管问题似乎出在 SQL 服务器端。

dataSource {
    pooled = true
    driverClassName = "net.sourceforge.jtds.jdbc.Driver"
    dialect = "org.hibernate.dialect.SQLServerDialect"
}    

test {
    dataSource {

        url = "jdbc:jtds:sqlserver://127.0.0.1:1433/Mini_test;instance=SQLEXPRESS;user=tester2;password=tester2"
    }

我还将 jtds-1.3.1.jar 放在“lib”中(如果我能解决这个问题,我可能会切换到 maven 依赖项)并在 buildconfig.groovy 中放置一个运行时字符串。

  dependencies {

    runtime 'net.sourceforge.jtds:jtds:1.3.1'

}

这是我尝试为“tester2”提供任何和所有访问权限:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述 我不知道还能尝试什么。似乎我已授予该用户无限访问权限,因此我不确定这些权限问题来自何处。

4

2 回答 2

1

我没有仔细查看权限。我检查了“db_denydatareader”和“db_denydatawriter”。很简单...

于 2013-10-29T18:34:48.783 回答
1

我注意到您没有在 conf 文件中指定数据库名称。

这是我的样子:

dataSource {
        url = "jdbc:jtds:sqlserver://server1:1433;databaseName=MyDbName"
        username = "user"
        password = "*******Pass"

        // logSql=true
    }

此外,请确保已在服务器级别的安全性中设置了用户映射,而不仅仅是在数据库级别的安全性下。

于 2013-10-29T15:13:03.543 回答