Information_schema 未从 jooq for SQL Server 生成

Posted

技术标签:

【中文标题】Information_schema 未从 jooq for SQL Server 生成【英文标题】:Information_schema not getting generated from jooq for SQL Server 【发布时间】:2019-11-02 20:38:29 【问题描述】:

我正在使用 Jooq Trial 作为 poc 从 SQL Server 数据库生成代码。我使用下面的配置。但是,它不会在编译过程中生成信息架构。

            <plugin>

                <groupId>org.jooq.trial</groupId>
                <artifactId>jooq-codegen-maven</artifactId>
                <version>$jooq.version</version>

                <executions>
                    <execution>
                        <id>jooq-codegen</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <skip>$skip.jooq.generation</skip>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <jdbc>
                        <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
                        <url>$database.url</url>
                        <user></user>
                        <password></password>
                    </jdbc>
                    <generator>
                        <name>org.jooq.codegen.JavaGenerator</name>
                        <database>
                            <name>org.jooq.meta.sqlserver.SQLServerDatabase</name>
                            <includes>.*</includes>
                            <excludes></excludes>
                            <!--<inputSchema></inputSchema> --> <!-- This will generate all schema of db, better to only generate the one 
                                interested in -->
                            <inputCatalog>scm</inputCatalog>
                            <schemata>
                                <schema>
                                    <inputSchema>dbo</inputSchema>
                                </schema>
                                <schema>
                                    <inputSchema>INFORMATION_SCHEMA</inputSchema>
                                </schema>
                            </schemata>
                        </database>
                        <target>
                            <packageName>org.blackdread.sqltojava.jooq</packageName>
                            <directory>target/generated-sources/jooq</directory>
                        </target>
                    </generator>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.jooq.trial</groupId>
                        <artifactId>jooq-meta</artifactId>
                        <version>$jooq.version</version>
                    </dependency>
                    <dependency>
                        <groupId>org.jooq.trial</groupId>
                        <artifactId>jooq-codegen</artifactId>
                        <version>$jooq.version</version>
                    </dependency>
                    <dependency>
                        <groupId>org.jooq.trial</groupId>
                        <artifactId>jooq</artifactId>
                        <version>$jooq.version</version>
                    </dependency>
                </dependencies>
            </plugin>

日志:

[INFO] 生成完成:scm.dbo:总计:1.493s,+0.333ms [INFO] [INFO] 不包括空架构:scm.INFORMATION_SCHEMA [INFO] 删除多余的文件

但是 information_schema 可以作为视图使用,它也向我返回了必要的信息。我正在使用 Windows 身份验证而不是 sa。

【问题讨论】:

【参考方案1】:

由于历史原因,jOOQ-meta 的SQLServerDatabase 只查询sys.objects 表,而不是sys.all_objects 表,以对您的数据库进行逆向工程。当然,这应该改变。我为此创建了一个功能请求: https://github.com/jOOQ/jOOQ/issues/8827

它已在 jOOQ 3.12 中实现

解决方法

与此同时,您有以下选择:

扩展 SQLServerDatabase 以调整其查询以获取 rom all_objects,而不是从 objects(专业版比免费试用版要简单得多,因为您将获得源代码和修改源代码的权利) 改用JDBCDatabase,它查询JDBC 的DatabaseMetaData。这也应该返回来自 sysINFORMATION_SCHEMA 模式的内容(但目前不提供对例如存储过程的访问权限) 使用在 jOOQ-meta 模块中生成的 INFORMATION_SCHEMA

【讨论】:

以上是关于Information_schema 未从 jooq for SQL Server 生成的主要内容,如果未能解决你的问题,请参考以下文章

数据库项目中的 SQL70527 错误

未从片段调用 onActivityResult

为啥我会收到“尝试导入错误:'EffectCards' 未从 'swiper' 导出”?

SDWebImage 库未从缓存加载图像

未从 crontab 设置路径

未从 Dropbox 检索图像