You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by sn...@apache.org on 2015/08/18 00:26:41 UTC

[2/2] incubator-ranger git commit: RANGER-614.2 : Provide support of SQL Anywhere as a DB in Ranger

RANGER-614.2 : Provide support of SQL Anywhere as a DB in Ranger

Signed-off-by: sneethiraj <sn...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/d79e8566
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/d79e8566
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/d79e8566

Branch: refs/heads/master
Commit: d79e8566fda5700683dc9d519392129ef8a7e9fe
Parents: e169b27
Author: Gautam Borad <gb...@gmail.com>
Authored: Mon Aug 17 10:24:19 2015 +0530
Committer: sneethiraj <sn...@apache.org>
Committed: Mon Aug 17 18:19:25 2015 -0400

----------------------------------------------------------------------
 .../ranger/audit/provider/DbAuditProvider.java  |    2 +-
 agents-common/scripts/enable-agent.sh           |    4 +
 hbase-agent/scripts/install.sh                  |   12 +
 hdfs-agent/scripts/install.sh                   |   12 +
 hive-agent/scripts/install.sh                   |   12 +
 .../main/java/org/apache/util/sql/Jisql.java    |   13 +
 .../db/sqlanywhere/kms_core_db_sqlanywhere.sql  |   44 +
 .../db/sqlserver/kms_core_db_sqlserver.sql      |    1 +
 kms/scripts/db_setup.py                         |   96 ++
 kms/scripts/dba_script.py                       |  185 ++-
 kms/scripts/install.properties                  |    6 +-
 kms/scripts/setup.sh                            |   26 +
 knox-agent/scripts/install.sh                   |   12 +
 .../db/sqlanywhere/create_dbversion_catalog.sql |   26 +
 .../db/sqlanywhere/xa_audit_db_sqlanywhere.sql  |   56 +
 .../db/sqlanywhere/xa_core_db_sqlanywhere.sql   | 1107 ++++++++++++++++++
 security-admin/scripts/db_setup.py              |  278 +++++
 security-admin/scripts/dba_script.py            |  214 +++-
 security-admin/scripts/install.properties       |   22 +-
 security-admin/scripts/setup.sh                 |   40 +
 .../org/apache/ranger/biz/RangerBizUtil.java    |    4 +
 .../java/org/apache/ranger/biz/SessionMgr.java  |    9 +-
 .../org/apache/ranger/common/AppConstants.java  |    1 +
 .../security/listener/SpringEventListener.java  |    8 +-
 storm-agent/scripts/install.sh                  |   12 +
 25 files changed, 2180 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/agents-audit/src/main/java/org/apache/ranger/audit/provider/DbAuditProvider.java
----------------------------------------------------------------------
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/provider/DbAuditProvider.java b/agents-audit/src/main/java/org/apache/ranger/audit/provider/DbAuditProvider.java
index d475f89..98da1c2 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/provider/DbAuditProvider.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/provider/DbAuditProvider.java
@@ -199,7 +199,7 @@ public class DbAuditProvider extends AuditDestination {
 		}
 
 		LOG.info("DbAuditProvider: init()");
-
+		LOG.info("java.library.path:"+System.getProperty("java.library.path"));
 		try {
 			entityManagerFactory = Persistence.createEntityManagerFactory("xa_server", mDbProperties);
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/agents-common/scripts/enable-agent.sh
----------------------------------------------------------------------
diff --git a/agents-common/scripts/enable-agent.sh b/agents-common/scripts/enable-agent.sh
index 16efe74..6adb2c4 100755
--- a/agents-common/scripts/enable-agent.sh
+++ b/agents-common/scripts/enable-agent.sh
@@ -382,6 +382,10 @@ then
 	then
 		export XAAUDIT_DB_JDBC_URL="jdbc:sqlserver://${audit_db_hostname};databaseName=${audit_db_name}"
 		export XAAUDIT_DB_JDBC_DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"
+	elif [ "${db_flavor}" = "SQLANYWHERE" ]
+	then
+		export XAAUDIT_DB_JDBC_URL="jdbc:sqlanywhere:database=${audit_db_name};host=${audit_db_hostname}"
+		export XAAUDIT_DB_JDBC_DRIVER="sap.jdbc4.sqlanywhere.IDriver"
 	else
         echo "Audit is not specified with a valid db_flavor: [${db_flavor}]. Ignoring audit ..."
         export XAAUDIT_DB_JDBC_URL="jdbc:${db_flavor}://${audit_db_hostname}/${audit_db_name}"

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/hbase-agent/scripts/install.sh
----------------------------------------------------------------------
diff --git a/hbase-agent/scripts/install.sh b/hbase-agent/scripts/install.sh
index 8190603..116beab 100644
--- a/hbase-agent/scripts/install.sh
+++ b/hbase-agent/scripts/install.sh
@@ -312,6 +312,18 @@ then
 	newPropertyValue="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 	updatePropertyToFile $propertyName $newPropertyValue $to_file
 fi
+if [ "${DB_FLAVOR}" == "SQLANYWHERE" ]
+then
+	audit_db_hostname=`grep '^XAAUDIT.DB.HOSTNAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	audit_db_name=`grep '^XAAUDIT.DB.DATABASE_NAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	propertyName=XAAUDIT.DB.JDBC_URL
+	newPropertyValue="jdbc:sqlanywhere:database=${audit_db_name};host=${audit_db_hostname}"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+
+	propertyName=XAAUDIT.DB.JDBC_DRIVER
+	newPropertyValue="sap.jdbc4.sqlanywhere.IDriver"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+fi
 for f in ${install_dir}/installer/conf/*-changes.cfg
 do
 	if [ -f ${f} ]

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/hdfs-agent/scripts/install.sh
----------------------------------------------------------------------
diff --git a/hdfs-agent/scripts/install.sh b/hdfs-agent/scripts/install.sh
index 2afd030..e9215fd 100644
--- a/hdfs-agent/scripts/install.sh
+++ b/hdfs-agent/scripts/install.sh
@@ -319,6 +319,18 @@ then
 	newPropertyValue="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 	updatePropertyToFile $propertyName $newPropertyValue $to_file
 fi
+if [ "${DB_FLAVOR}" == "SQLANYWHERE" ]
+then
+	audit_db_hostname=`grep '^XAAUDIT.DB.HOSTNAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	audit_db_name=`grep '^XAAUDIT.DB.DATABASE_NAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	propertyName=XAAUDIT.DB.JDBC_URL
+	newPropertyValue="jdbc:sqlanywhere:database=${audit_db_name};host=${audit_db_hostname}"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+
+	propertyName=XAAUDIT.DB.JDBC_DRIVER
+	newPropertyValue="sap.jdbc4.sqlanywhere.IDriver"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+fi
 for f in ${install_dir}/installer/conf/*-changes.cfg
 do
         if [ -f ${f} ]

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/hive-agent/scripts/install.sh
----------------------------------------------------------------------
diff --git a/hive-agent/scripts/install.sh b/hive-agent/scripts/install.sh
index 6798a3c..74c6e56 100644
--- a/hive-agent/scripts/install.sh
+++ b/hive-agent/scripts/install.sh
@@ -296,6 +296,18 @@ then
 	newPropertyValue="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 	updatePropertyToFile $propertyName $newPropertyValue $to_file
 fi
+if [ "${DB_FLAVOR}" == "SQLANYWHERE" ]
+then
+	audit_db_hostname=`grep '^XAAUDIT.DB.HOSTNAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	audit_db_name=`grep '^XAAUDIT.DB.DATABASE_NAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	propertyName=XAAUDIT.DB.JDBC_URL
+	newPropertyValue="jdbc:sqlanywhere:database=${audit_db_name};host=${audit_db_hostname}"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+
+	propertyName=XAAUDIT.DB.JDBC_DRIVER
+	newPropertyValue="sap.jdbc4.sqlanywhere.IDriver"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+fi
 for f in ${install_dir}/installer/conf/*-changes.cfg
 do
         if [ -f ${f} ]

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/jisql/src/main/java/org/apache/util/sql/Jisql.java
----------------------------------------------------------------------
diff --git a/jisql/src/main/java/org/apache/util/sql/Jisql.java b/jisql/src/main/java/org/apache/util/sql/Jisql.java
index b9453e8..cf7563c 100644
--- a/jisql/src/main/java/org/apache/util/sql/Jisql.java
+++ b/jisql/src/main/java/org/apache/util/sql/Jisql.java
@@ -214,6 +214,9 @@ import org.apache.util.outputformatter.JisqlFormatter;
  * </p>
  */
 public class Jisql {
+	//Sybase SQL Anywhere JDBC4-Type2 (Native) Driver
+	private static final String sapJDBC4SqlAnywhereDriverName= "sap.jdbc4.sqlanywhere.IDriver";
+	private static final String sybaseJDBC4SqlAnywhereDriverName= "sybase.jdbc4.sqlanywhere.IDriver";
     private static final String sybaseJConnect6DriverName = "com.sybase.jdbc3.jdbc.SybDriver";
     private static final String sybaseJConnect5DriverName = "com.sybase.jdbc2.jdbc.SybDriver";
     private static final String sybaseJConnect4DriverName = "com.sybase.jdbc.SybDriver";
@@ -518,6 +521,12 @@ public class Jisql {
         			// Ignore IOE when closing streams
         		}
         	}
+		if (resultSet != null) {
+			try {
+				resultSet.close();
+			} catch (SQLException sqle) {
+			}
+		}
             if (statement != null) {
                 try {
                     statement.close();
@@ -649,6 +658,10 @@ public class Jisql {
                 driverName = mySQLConnectJDriverName;
             else if (driverName.compareToIgnoreCase("mysqlcaucho") == 0)
                 driverName = mySQLCauchoDriverName;
+            else if (driverName.compareToIgnoreCase("sapsajdbc4") == 0)
+                driverName = sapJDBC4SqlAnywhereDriverName;
+            else if (driverName.compareToIgnoreCase("sybasesajdbc4") == 0)
+                driverName = sybaseJDBC4SqlAnywhereDriverName;
         }
 
         connectString = (String) options.valueOf("cstring");

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/kms/scripts/db/sqlanywhere/kms_core_db_sqlanywhere.sql
----------------------------------------------------------------------
diff --git a/kms/scripts/db/sqlanywhere/kms_core_db_sqlanywhere.sql b/kms/scripts/db/sqlanywhere/kms_core_db_sqlanywhere.sql
new file mode 100644
index 0000000..fd7abdd
--- /dev/null
+++ b/kms/scripts/db/sqlanywhere/kms_core_db_sqlanywhere.sql
@@ -0,0 +1,44 @@
+-- Licensed to the Apache Software Foundation(ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+--(the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+CREATE TABLE ranger_masterkey(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	cipher varchar(255) DEFAULT NULL NULL,
+	bitlength int DEFAULT NULL NULL,
+	masterkey varchar(2048),
+	CONSTRAINT ranger_masterkey_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+CREATE TABLE ranger_keystore(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	kms_alias varchar(255) NOT NULL,
+	kms_createdDate bigint DEFAULT NULL NULL,
+	kms_cipher varchar(255) DEFAULT NULL NULL,
+	kms_bitLength bigint DEFAULT NULL NULL,
+	kms_description varchar(512) DEFAULT NULL NULL,
+	kms_version bigint DEFAULT NULL NULL,
+	kms_attributes varchar(1024) DEFAULT NULL NULL,
+	kms_encoded varchar(2048),
+	CONSTRAINT ranger_keystore_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+exit

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/kms/scripts/db/sqlserver/kms_core_db_sqlserver.sql
----------------------------------------------------------------------
diff --git a/kms/scripts/db/sqlserver/kms_core_db_sqlserver.sql b/kms/scripts/db/sqlserver/kms_core_db_sqlserver.sql
index 32cc38c..6567d3b 100644
--- a/kms/scripts/db/sqlserver/kms_core_db_sqlserver.sql
+++ b/kms/scripts/db/sqlserver/kms_core_db_sqlserver.sql
@@ -44,6 +44,7 @@ CREATE TABLE [dbo].[ranger_keystore](
 	[create_time] [datetime2] DEFAULT NULL NULL,
 	[update_time] [datetime2] DEFAULT NULL NULL,
 	[added_by_id] [bigint] DEFAULT NULL NULL,
+	[upd_by_id] [bigint] DEFAULT NULL NULL,
 	[kms_alias] [varchar](255) NOT NULL,
 	[kms_createdDate] [bigint] DEFAULT NULL NULL,
 	[kms_cipher] [varchar](255) DEFAULT NULL NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/kms/scripts/db_setup.py
----------------------------------------------------------------------
diff --git a/kms/scripts/db_setup.py b/kms/scripts/db_setup.py
index 641376a..4b90ed6 100755
--- a/kms/scripts/db_setup.py
+++ b/kms/scripts/db_setup.py
@@ -381,6 +381,89 @@ class SqlServerConf(BaseDB):
 			log("[I] Table '" + TABLE_NAME + "' does not exist in database '" + db_name + "'","info")
 			return False
 
+class SqlAnywhereConf(BaseDB):
+	# Constructor
+	def __init__(self, host, SQL_CONNECTOR_JAR, JAVA_BIN):
+		self.host = host
+		self.SQL_CONNECTOR_JAR = SQL_CONNECTOR_JAR
+		self.JAVA_BIN = JAVA_BIN
+
+	def get_jisql_cmd(self, user, password, db_name):
+		path = RANGER_KMS_HOME
+		self.JAVA_BIN = self.JAVA_BIN.strip("'")
+		if os_name == "LINUX":
+			jisql_cmd = "%s -cp %s:%s/jisql/lib/* org.apache.util.sql.Jisql -user %s -password %s -driver sapsajdbc4 -cstring jdbc:sqlanywhere:database=%s;host=%s -noheader -trim"%(self.JAVA_BIN, self.SQL_CONNECTOR_JAR, path,user, password,db_name,self.host)
+		elif os_name == "WINDOWS":
+			jisql_cmd = "%s -cp %s;%s\\jisql\\lib\\* org.apache.util.sql.Jisql -user %s -password %s -driver sapsajdbc4 -cstring jdbc:sqlanywhere:database=%s;host=%s -noheader -trim"%(self.JAVA_BIN, self.SQL_CONNECTOR_JAR, path, user, password,db_name,self.host)
+		return jisql_cmd
+
+	def check_connection(self, db_name, db_user, db_password):
+		log("[I] Checking connection", "info")
+		get_cmd = self.get_jisql_cmd(db_user, db_password, db_name)
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"SELECT 1;\""
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"SELECT 1;\" -c ;"
+		output = check_output(query)
+		if output.strip('1 |'):
+			log("[I] Connection success", "info")
+			return True
+		else:
+			log("[E] Can't establish connection", "error")
+			sys.exit(1)
+
+	def import_db_file(self, db_name, db_user, db_password, file_name):
+		name = basename(file_name)
+		if os.path.isfile(file_name):
+			log("[I] Importing db schema to database " + db_name + " from file: " + name,"info")
+			get_cmd = self.get_jisql_cmd(db_user, db_password, db_name)
+			if os_name == "LINUX":
+				query = get_cmd + " -input %s" %file_name
+				ret = subprocess.call(shlex.split(query))
+			elif os_name == "WINDOWS":
+				query = get_cmd + " -input %s" %file_name
+				ret = subprocess.call(query)
+			if ret == 0:
+				log("[I] "+name + " DB schema imported successfully","info")
+			else:
+				log("[E] "+name + " DB Schema import failed!","error")
+				sys.exit(1)
+		else:
+			log("[I] DB Schema file " + name+ " not found","error")
+			sys.exit(1)
+
+	def check_table(self, db_name, db_user, db_password, TABLE_NAME):
+		self.set_options(db_name, db_user, db_password, TABLE_NAME)
+		get_cmd = self.get_jisql_cmd(db_user, db_password, db_name)
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"SELECT name FROM sysobjects where name = '%s' and type='U';\"" %(TABLE_NAME)
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"SELECT name FROM sysobjects where name = '%s' and type='U';\" -c ;" %(TABLE_NAME)
+		output = check_output(query)
+		if output.strip(TABLE_NAME + " |"):
+			log("[I] Table '" + TABLE_NAME + "' already exists in  database '" + db_name + "'","info")
+			return True
+		else:
+			log("[I] Table '" + TABLE_NAME + "' does not exist in database '" + db_name + "'","info")
+			return False
+
+	def set_options(self, db_name, db_user, db_password, TABLE_NAME):
+		get_cmd = self.get_jisql_cmd(db_user, db_password, db_name)
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"set option public.reserved_keywords='LIMIT';\""
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"set option public.reserved_keywords='LIMIT';\" -c ;"
+		ret = subprocess.call(shlex.split(query))
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"set option public.max_statement_count=0;\""
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"set option public.max_statement_count=0;\" -c;"
+		ret = subprocess.call(shlex.split(query))
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"set option public.max_cursor_count=0;\""
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"set option public.max_cursor_count=0;\" -c;"
+		ret = subprocess.call(shlex.split(query))
 
 def main(argv):
 	populate_global_dict()
@@ -422,6 +505,9 @@ def main(argv):
 	sqlserver_core_file = globalDict['sqlserver_core_file']
 	sqlserver_patches = os.path.join('db','sqlserver','patches')
 
+	sqlanywhere_core_file = globalDict['sqlanywhere_core_file']
+	sqlanywhere_patches = os.path.join('db','sqlanywhere','patches')
+
 	db_name = globalDict['db_name']
 	db_user = globalDict['db_user']
 	db_password = globalDict['db_password']
@@ -449,6 +535,16 @@ def main(argv):
 		SQLSERVER_CONNECTOR_JAR = globalDict['SQL_CONNECTOR_JAR']
 		xa_sqlObj = SqlServerConf(xa_db_host, SQLSERVER_CONNECTOR_JAR, JAVA_BIN)
 		xa_db_core_file = os.path.join(RANGER_KMS_HOME , sqlserver_core_file)
+
+	elif XA_DB_FLAVOR == "SQLANYWHERE":
+		if not os_name == "WINDOWS" :
+			if os.environ['LD_LIBRARY_PATH'] == "":
+				log("[E] ---------- LD_LIBRARY_PATH environment property not defined, aborting installation. ----------", "error")
+				sys.exit(1)
+		SQLANYWHERE_CONNECTOR_JAR = globalDict['SQL_CONNECTOR_JAR']
+		xa_sqlObj = SqlAnywhereConf(xa_db_host, SQLANYWHERE_CONNECTOR_JAR, JAVA_BIN)
+		xa_db_core_file = os.path.join(RANGER_KMS_HOME , sqlanywhere_core_file)
+
 	else:
 		log("[E] --------- NO SUCH SUPPORTED DB FLAVOUR!! ---------", "error")
 		sys.exit(1)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/kms/scripts/dba_script.py
----------------------------------------------------------------------
diff --git a/kms/scripts/dba_script.py b/kms/scripts/dba_script.py
index eb38101..105257e 100755
--- a/kms/scripts/dba_script.py
+++ b/kms/scripts/dba_script.py
@@ -865,6 +865,177 @@ class SqlServerConf(BaseDB):
 			logFile("ALTER LOGIN [%s] WITH DEFAULT_DATABASE=[%s];" %(db_user, db_name))
 			logFile("USE %s EXEC sp_addrolemember N'db_owner', N'%s';" %(db_name, db_user))
 
+class SqlAnywhereConf(BaseDB):
+	# Constructor
+	def __init__(self, host, SQL_CONNECTOR_JAR, JAVA_BIN):
+		self.host = host
+		self.SQL_CONNECTOR_JAR = SQL_CONNECTOR_JAR
+		self.JAVA_BIN = JAVA_BIN
+
+	def get_jisql_cmd(self, user, password, db_name):
+		#TODO: User array for forming command
+		path = RANGER_KMS_HOME
+		self.JAVA_BIN = self.JAVA_BIN.strip("'")
+		if os_name == "LINUX":
+			jisql_cmd = "%s -cp %s:%s/jisql/lib/* org.apache.util.sql.Jisql -user %s -password %s -driver sapsajdbc4 -cstring jdbc:sqlanywhere:database=%s;host=%s -noheader -trim"%(self.JAVA_BIN, self.SQL_CONNECTOR_JAR, path,user, password,db_name,self.host)
+		elif os_name == "WINDOWS":
+			jisql_cmd = "%s -cp %s;%s\\jisql\\lib\\* org.apache.util.sql.Jisql -user %s -password %s -driver sapsajdbc4 -cstring jdbc:sqlanywhere:database=%s;host=%s -noheader -trim"%(self.JAVA_BIN, self.SQL_CONNECTOR_JAR, path, user, password,db_name,self.host)
+		return jisql_cmd
+	def verify_user(self, root_user, db_root_password, db_user,dryMode):
+		if dryMode == False:
+			log("[I] Verifying user " + db_user , "info")
+		get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"select name from syslogins where name = '%s';\"" %(db_user)
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"select name from syslogins where name = '%s';\" -c ;" %(db_user)
+		output = check_output(query)
+		if output.strip(db_user + " |"):
+			return True
+		else:
+			return False
+
+	def check_connection(self, db_name, db_user, db_password):
+		log("[I] Checking connection", "info")
+		get_cmd = self.get_jisql_cmd(db_user, db_password, db_name)
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"SELECT 1;\""
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"SELECT 1;\" -c ;"
+		output = check_output(query)
+		if output.strip('1 |'):
+			log("[I] Connection success", "info")
+			return True
+		else:
+			log("[E] Can't establish connection", "error")
+			sys.exit(1)
+	def create_rangerdb_user(self, root_user, db_user, db_password, db_root_password,dryMode):
+		if self.check_connection('', root_user, db_root_password):
+			if self.verify_user(root_user, db_root_password, db_user,dryMode):
+				if dryMode == False:
+					log("[I] SQL Anywhere user " + db_user + " already exists.", "info")
+			else:
+				if dryMode == False:
+					get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+					log("[I] User does not exists, Creating Login user " + db_user, "info")
+					if os_name == "LINUX":
+						query = get_cmd + " -c \; -query \"CREATE USER %s IDENTIFIED BY '%s';\"" %(db_user,db_password)
+						ret = subprocess.call(shlex.split(query))
+					elif os_name == "WINDOWS":
+						query = get_cmd + " -query \"CREATE USER %s IDENTIFIED BY '%s';\" -c ;" %(db_user,db_password)
+						ret = subprocess.call(query)
+					if ret == 0:
+						if self.verify_user(root_user, db_root_password, db_user,dryMode):
+							 log("[I] SQL Anywhere user " + db_user + " created", "info")
+						else:
+							log("[E] SQL Anywhere user " +db_user+" creation failed..", "error")
+							sys.exit(1)
+					else:
+						log("[E] SQL Anywhere user " +db_user+" creation failed..", "error")
+						sys.exit(1)
+				else:
+					logFile("CREATE USER %s IDENTIFIED BY = '%s';" %(db_user,db_password))
+
+	def verify_db(self, root_user, db_root_password, db_name,dryMode):
+		if dryMode == False:
+			log("[I] Verifying database " + db_name, "info")
+		get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"select alias from sa_db_info() where alias='%s';\"" %(db_name)
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"select alias from sa_db_info() where alias='%s';\" -c ;" %(db_name)
+		output = check_output(query)
+		if output.strip(db_name + " |"):
+			return True
+		else:
+			return False
+	def create_db(self, root_user, db_root_password, db_name, db_user, db_password,dryMode):
+		if self.verify_db(root_user, db_root_password, db_name,dryMode):
+			if dryMode == False:
+				log("[I] Database " + db_name + " already exists.","info")
+		else:
+			if dryMode == False:
+				log("[I] Database does not exist. Creating database : " + db_name,"info")
+				get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+				if os_name == "LINUX":
+					query = get_cmd + " -c \; -query \"create database '%s' dba user '%s' dba password '%s' database size 100MB;\"" %(db_name,db_user, db_password)
+					ret = subprocess.call(shlex.split(query))
+				elif os_name == "WINDOWS":
+					query = get_cmd + " -query \"create database '%s' dba user '%s' dba password '%s' database size 100MB;\" -c ;" %(db_name,db_user, db_password)
+					ret = subprocess.call(query)
+				if ret != 0:
+					log("[E] Database creation failed..","error")
+					sys.exit(1)
+				else:
+					self.start_db(root_user, db_root_password, db_name,dryMode)
+					if self.verify_db(root_user, db_root_password, db_name,dryMode):
+						self.create_user(root_user, db_name ,db_user, db_password, db_root_password,dryMode)
+						log("[I] Creating database " + db_name + " succeeded", "info")
+						return True
+					else:
+						log("[E] Database creation failed..","error")
+						sys.exit(1)
+			else:
+				logFile("create database '%s' dba user '%s' dba password '%s' database size 100MB;" %(db_name,db_user, db_password))
+
+	def create_user(self, root_user, db_name ,db_user, db_password, db_root_password,dryMode):
+		get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"select name from syslogins where name ='%s';\"" %(db_user)
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"select name from syslogins where name ='%s';\" -c ;" %(db_user)
+		output = check_output(query)
+		if output.strip(db_user + " |"):
+			if dryMode == False:
+				log("[I] User "+db_user+" exist ","info")
+		else:
+			if dryMode == False:
+				if os_name == "LINUX":
+					query = get_cmd + " -c \; -query \"CREATE USER %s IDENTIFIED BY '%s';\"" %(db_user, db_password)
+					ret = subprocess.call(shlex.split(query))
+				elif os_name == "WINDOWS":
+					query = get_cmd + " -query \"CREATE USER %s IDENTIFIED BY '%s';\" -c ;" %(db_user, db_password)
+					ret = subprocess.call(query)
+				if ret == 0:
+					if os_name == "LINUX":
+						query = get_cmd + " -c \; -query \"select name from syslogins where name ='%s';\"" %(db_user)
+					elif os_name == "WINDOWS":
+						query = get_cmd + " -query \"select name from syslogins where name ='%s';\" -c ;" %(db_user)
+					output = check_output(query)
+					if output.strip(db_user + " |"):
+						log("[I] User "+db_user+" exist ","info")
+					else:
+						log("[E] Database creation failed..","error")
+						sys.exit(1)
+				else:
+					log("[E] Database creation failed..","error")
+					sys.exit(1)
+			else:
+				logFile("CREATE USER %s IDENTIFIED BY '%s';" %(db_user, db_password))
+	def grant_xa_db_user(self, root_user, db_name, db_user, db_password, db_root_password, is_revoke,dryMode):
+		if dryMode == False:
+			log("[I] Granting permission to user '" + db_user + "' on db '" + db_name + "'" , "info")
+			get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+			if os_name == "LINUX":
+				query = get_cmd + " -c \; -query \"GRANT CONNECT to %s IDENTIFIED BY '%s';\"" %(db_user, db_password)
+				ret = subprocess.call(shlex.split(query))
+			elif os_name == "WINDOWS":
+				query = get_cmd + " -query \"GRANT CONNECT to %s IDENTIFIED BY '%s';\" -c ;" %(db_user, db_password)
+				ret = subprocess.call(query)
+			if ret != 0:
+				sys.exit(1)
+		else:
+			logFile("GRANT CONNECT to %s IDENTIFIED BY '%s';" %(db_user, db_password))
+
+	def start_db(self,root_user, db_root_password, db_name,dryMode):
+		if dryMode == False:
+			log("[I] Starting database " + db_name, "info")
+		get_cmd = self.get_jisql_cmd(root_user, db_root_password, '')
+		if os_name == "LINUX":
+			query = get_cmd + " -c \; -query \"start database '%s' autostop off;\"" %(db_name)
+		elif os_name == "WINDOWS":
+			query = get_cmd + " -query \"start database '%s' autostop off;\" -c ;" %(db_name)
+		output = check_output(query)
 
 def main(argv):
 
@@ -945,7 +1116,7 @@ def main(argv):
 	else:
 		XA_DB_FLAVOR=''
 		while XA_DB_FLAVOR == "":
-			log("Enter db flavour{MYSQL|ORACLE|POSTGRES|MSSQL} :","info")
+			log("Enter db flavour{MYSQL|ORACLE|POSTGRES|MSSQL|SQLANYWHERE} :","info")
 			XA_DB_FLAVOR=raw_input()
 
 	XA_DB_FLAVOR = XA_DB_FLAVOR.upper()
@@ -1020,6 +1191,8 @@ def main(argv):
 	#sqlserver_core_file = globalDict['sqlserver_core_file']
 	sqlserver_core_file = os.path.join('db','sqlserver','xa_core_db_sqlserver.sql')
 
+	sqlanywhere_core_file = os.path.join('db','sqlanywhere','xa_core_db_sqlanywhere.sql')
+
 	x_db_version = 'x_db_version_h'
 	x_user = 'x_portal_user'
 
@@ -1046,6 +1219,16 @@ def main(argv):
 		SQLSERVER_CONNECTOR_JAR=CONNECTOR_JAR
 		xa_sqlObj = SqlServerConf(xa_db_host, SQLSERVER_CONNECTOR_JAR, JAVA_BIN)
 		xa_db_core_file = os.path.join(RANGER_KMS_HOME,sqlserver_core_file)
+
+	elif XA_DB_FLAVOR == "SQLANYWHERE":
+		if not os_name == "WINDOWS" :
+			if os.environ['LD_LIBRARY_PATH'] == "":
+				log("[E] ---------- LD_LIBRARY_PATH environment property not defined, aborting installation. ----------", "error")
+				sys.exit(1)
+		SQLANYWHERE_CONNECTOR_JAR=CONNECTOR_JAR
+		xa_sqlObj = SqlAnywhereConf(xa_db_host, SQLANYWHERE_CONNECTOR_JAR, JAVA_BIN)
+		xa_db_core_file = os.path.join(RANGER_KMS_HOME,sqlanywhere_core_file)
+
 	else:
 		log("[E] ---------- NO SUCH SUPPORTED DB FLAVOUR.. ----------", "error")
 		sys.exit(1)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/kms/scripts/install.properties
----------------------------------------------------------------------
diff --git a/kms/scripts/install.properties b/kms/scripts/install.properties
index cfe9adf..bad7f20 100755
--- a/kms/scripts/install.properties
+++ b/kms/scripts/install.properties
@@ -23,7 +23,7 @@
 
 PYTHON_COMMAND_INVOKER=python
 
-#DB_FLAVOR=MYSQL|ORACLE|POSTGRES|MSSQL
+#DB_FLAVOR=MYSQL|ORACLE|POSTGRES|MSSQL|SQLANYWHERE
 DB_FLAVOR=MYSQL
 #
 # The executable path to be used to invoke command-line MYSQL 
@@ -39,6 +39,7 @@ SQL_COMMAND_INVOKER='mysql'
 #SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
 #SQL_CONNECTOR_JAR=/usr/share/java/postgresql.jar
 #SQL_CONNECTOR_JAR=/usr/share/java/sqljdbc4.jar
+#SQL_CONNECTOR_JAR=/opt/sqlanywhere17/java/sajdbc4.jar
 SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
 
 
@@ -49,7 +50,7 @@ SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
 # ** it will be prompted to enter the password during installation process 
 # **************************************************************************
 #
-#db_root_user=root|SYS|postgres|sa
+#db_root_user=root|SYS|postgres|sa|dba
 db_root_user=root
 db_root_password=
 db_host=localhost
@@ -224,6 +225,7 @@ postgres_core_file=db/postgres/kms_core_db_postgres.sql
 
 sqlserver_core_file=db/sqlserver/kms_core_db_sqlserver.sql
 
+sqlanywhere_core_file=db/sqlanywhere/kms_core_db_sqlanywhere.sql
 cred_keystore_filename=$app_home/WEB-INF/classes/conf/.jceks/rangerkms.jceks
 
 KMS_BLACKLIST_DECRYPT_EEK=hdfs

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/kms/scripts/setup.sh
----------------------------------------------------------------------
diff --git a/kms/scripts/setup.sh b/kms/scripts/setup.sh
index 972e55e..1410f46 100755
--- a/kms/scripts/setup.sh
+++ b/kms/scripts/setup.sh
@@ -277,6 +277,19 @@ sanity_check_files() {
             log "[E] ${sqlserver_core_file} does not exists" ; exit 1;
         fi
     fi
+	if [ "${DB_FLAVOR}" == "SQLANYWHERE" ]
+	then
+		if [ "${LD_LIBRARY_PATH}" == "" ]
+		then
+			log "[E] LD_LIBRARY_PATH environment property not defined, aborting installation."
+			exit 1
+		fi
+		if test -f ${sqlanywhere_core_file}; then
+			log "[I] ${sqlanywhere_core_file} file found"
+		else
+			log "[E] ${sqlanywhere_core_file} does not exists" ; exit 1;
+		fi
+	fi
 }
 
 create_rollback_point() {
@@ -397,7 +410,20 @@ update_properties() {
 		updatePropertyToFilePy $propertyName $newPropertyValue $to_file
 
 	fi
+	if [ "${DB_FLAVOR}" == "SQLANYWHERE" ]
+	then
+		propertyName=ranger.ks.jpa.jdbc.url
+		newPropertyValue="jdbc:sqlanywhere:database=${db_name};host=${DB_HOST}"
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file
+
+		propertyName=ranger.ks.jpa.jdbc.dialect
+		newPropertyValue="org.eclipse.persistence.platform.database.SQLAnywherePlatform"
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file
 
+		propertyName=ranger.ks.jpa.jdbc.driver
+		newPropertyValue="sap.jdbc4.sqlanywhere.IDriver"
+		updatePropertyToFilePy $propertyName $newPropertyValue $to_file
+	fi
 	keystore="${cred_keystore_filename}"
 
 	echo "Starting configuration for XA DB credentials:"

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/knox-agent/scripts/install.sh
----------------------------------------------------------------------
diff --git a/knox-agent/scripts/install.sh b/knox-agent/scripts/install.sh
index 2255eac..163dbc5 100644
--- a/knox-agent/scripts/install.sh
+++ b/knox-agent/scripts/install.sh
@@ -215,6 +215,18 @@ then
 	newPropertyValue="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 	updatePropertyToFile $propertyName $newPropertyValue $to_file
 fi
+if [ "${DB_FLAVOR}" == "SQLANYWHERE" ]
+then
+	audit_db_hostname=`grep '^XAAUDIT.DB.HOSTNAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	audit_db_name=`grep '^XAAUDIT.DB.DATABASE_NAME'  ${install_dir}/install.properties | awk -F= '{ print $2 }'`
+	propertyName=XAAUDIT.DB.JDBC_URL
+	newPropertyValue="jdbc:sqlanywhere:database=${audit_db_name};host=${audit_db_hostname}"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+
+	propertyName=XAAUDIT.DB.JDBC_DRIVER
+	newPropertyValue="sap.jdbc4.sqlanywhere.IDriver"
+	updatePropertyToFile $propertyName $newPropertyValue $to_file
+fi
 for f in ${install_dir}/installer/conf/*-changes.cfg
 do
 	if [ -f ${f} ]

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/security-admin/db/sqlanywhere/create_dbversion_catalog.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/sqlanywhere/create_dbversion_catalog.sql b/security-admin/db/sqlanywhere/create_dbversion_catalog.sql
new file mode 100644
index 0000000..59d1b2c
--- /dev/null
+++ b/security-admin/db/sqlanywhere/create_dbversion_catalog.sql
@@ -0,0 +1,26 @@
+-- Licensed to the Apache Software Foundation(ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+--(the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+create table dbo.x_db_version_h(
+id bigint identity not null primary key,
+version varchar(64) not null,
+inst_at datetime not null,
+inst_by varchar(256) not null,
+updated_at datetime not null,
+updated_by varchar(256) not null,
+active varchar(1) default 'Y' check(active IN ('Y', 'N'))
+)
+GO
+exit
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/security-admin/db/sqlanywhere/xa_audit_db_sqlanywhere.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/sqlanywhere/xa_audit_db_sqlanywhere.sql b/security-admin/db/sqlanywhere/xa_audit_db_sqlanywhere.sql
new file mode 100644
index 0000000..8154a9a
--- /dev/null
+++ b/security-admin/db/sqlanywhere/xa_audit_db_sqlanywhere.sql
@@ -0,0 +1,56 @@
+-- Licensed to the Apache Software Foundation(ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+--(the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+CREATE TABLE dbo.xa_access_audit(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	audit_type int DEFAULT 0 NOT NULL,
+	access_result int DEFAULT 0 NULL,
+	access_type varchar(255) DEFAULT NULL NULL,
+	acl_enforcer varchar(255) DEFAULT NULL NULL,
+	agent_id varchar(255) DEFAULT NULL NULL,
+	client_ip varchar(255) DEFAULT NULL NULL,
+	client_type varchar(255) DEFAULT NULL NULL,
+	policy_id bigint DEFAULT 0 NULL,
+	repo_name varchar(255) DEFAULT NULL NULL,
+	repo_type int DEFAULT 0 NULL,
+	result_reason varchar(255) DEFAULT NULL NULL,
+	session_id varchar(255) DEFAULT NULL NULL,
+	event_time datetime DEFAULT NULL NULL,
+	request_user varchar(255) DEFAULT NULL NULL,
+	action varchar(2000) DEFAULT NULL NULL,
+	request_data varchar(4000) DEFAULT NULL NULL,
+	resource_path varchar(4000) DEFAULT NULL NULL,
+	resource_type varchar(255) DEFAULT NULL NULL,
+	seq_num bigint DEFAULT 0 NULL,
+	event_count bigint DEFAULT 1 NULL,
+	event_dur_ms bigint DEFAULT 1 NULL,
+	CONSTRAINT xa_access_audit_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_cr_time ON dbo.xa_access_audit(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_event_time ON dbo.xa_access_audit(event_time ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_added_by_id ON dbo.xa_access_audit(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_upd_by_id ON dbo.xa_access_audit(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_up_time ON dbo.xa_access_audit(update_time ASC)
+GO
+exit
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d79e8566/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql b/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql
new file mode 100644
index 0000000..0760cb8
--- /dev/null
+++ b/security-admin/db/sqlanywhere/xa_core_db_sqlanywhere.sql
@@ -0,0 +1,1107 @@
+-- Licensed to the Apache Software Foundation(ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+--(the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+create table dbo.x_portal_user(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	first_name varchar(256) DEFAULT NULL NULL,
+	last_name varchar(256) DEFAULT NULL NULL,
+	pub_scr_name varchar(2048) DEFAULT NULL NULL,
+	login_id varchar(767) DEFAULT NULL NULL,
+	password varchar(512) NOT NULL,
+	email varchar(512) DEFAULT NULL NULL,
+	status int DEFAULT 0 NOT NULL,
+	user_src int DEFAULT 0 NOT NULL,
+	notes varchar(4000) DEFAULT NULL NULL,
+	CONSTRAINT x_portal_user_PK_id PRIMARY KEY CLUSTERED(id),
+	CONSTRAINT x_portal_user_UK_email UNIQUE NONCLUSTERED (email),
+	CONSTRAINT x_portal_user_UK_login_id UNIQUE NONCLUSTERED (login_id)
+)
+GO
+create table dbo.x_portal_user_role(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	user_id bigint NOT NULL,
+	user_role varchar(128) DEFAULT NULL NULL,
+	status int DEFAULT 0 NOT NULL,
+	CONSTRAINT x_portal_user_role_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.xa_access_audit(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	audit_type int DEFAULT 0 NOT NULL,
+	access_result int DEFAULT 0 NULL,
+	access_type varchar(255) DEFAULT NULL NULL,
+	acl_enforcer varchar(255) DEFAULT NULL NULL,
+	agent_id varchar(255) DEFAULT NULL NULL,
+	client_ip varchar(255) DEFAULT NULL NULL,
+	client_type varchar(255) DEFAULT NULL NULL,
+	policy_id bigint DEFAULT 0 NULL,
+	repo_name varchar(255) DEFAULT NULL NULL,
+	repo_type int DEFAULT 0 NULL,
+	result_reason varchar(255) DEFAULT NULL NULL,
+	session_id varchar(255) DEFAULT NULL NULL,
+	event_time datetime DEFAULT NULL NULL,
+	request_user varchar(255) DEFAULT NULL NULL,
+	action varchar(2000) DEFAULT NULL NULL,
+	request_data varchar(4000) DEFAULT NULL NULL,
+	resource_path varchar(4000) DEFAULT NULL NULL,
+	resource_type varchar(255) DEFAULT NULL NULL,
+	seq_num bigint DEFAULT 0 NULL,
+	event_count bigint DEFAULT 1 NULL,
+	event_dur_ms bigint DEFAULT 1 NULL,
+	CONSTRAINT xa_access_audit_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_asset(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	asset_name varchar(1024) NOT NULL,
+	descr varchar(4000) NOT NULL,
+	act_status int DEFAULT 0 NOT NULL,
+	asset_type int DEFAULT 0 NOT NULL,
+	config text NULL,
+	sup_native tinyint DEFAULT 0 NOT NULL,
+	CONSTRAINT x_asset_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_auth_sess(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	login_id varchar(767) NOT NULL,
+	user_id bigint DEFAULT NULL NULL,
+	ext_sess_id varchar(512) DEFAULT NULL NULL,
+	auth_time datetime NOT NULL,
+	auth_status int DEFAULT 0 NOT NULL,
+	auth_type int DEFAULT 0 NOT NULL,
+	auth_provider int DEFAULT 0 NOT NULL,
+	device_type int DEFAULT 0 NOT NULL,
+	req_ip varchar(48) NOT NULL,
+	req_ua varchar(1024) DEFAULT NULL NULL,
+	CONSTRAINT x_auth_sess_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_cred_store(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	store_name varchar(1024) NOT NULL,
+	descr varchar(4000) NOT NULL,
+	CONSTRAINT x_cred_store_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_db_base(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	CONSTRAINT x_db_base_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_group(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	group_name varchar(1024) NOT NULL,
+	descr varchar(4000) NOT NULL,
+	status int DEFAULT 0 NOT NULL,
+	group_type int DEFAULT 0 NOT NULL,
+	cred_store_id bigint DEFAULT NULL NULL,
+	group_src int DEFAULT 0 NOT NULL,
+	is_visible int DEFAULT 1 NOT NULL,
+	CONSTRAINT x_group_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_group_groups(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	group_name varchar(1024) NOT NULL,
+	p_group_id bigint DEFAULT NULL NULL,
+	group_id bigint DEFAULT NULL NULL,
+	CONSTRAINT x_group_groups_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_user(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	user_name varchar(1024) NOT NULL,
+	descr varchar(4000) NOT NULL,
+	status int DEFAULT 0 NOT NULL,
+	cred_store_id bigint DEFAULT NULL NULL,
+	is_visible int DEFAULT 1 NOT NULL,
+	CONSTRAINT x_user_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_group_users(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	group_name varchar(1024) NOT NULL,
+	p_group_id bigint DEFAULT NULL NULL,
+	user_id bigint DEFAULT NULL NULL,
+	CONSTRAINT x_group_users_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_export_audit(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	client_ip varchar(255) NOT NULL,
+	agent_id varchar(255) DEFAULT NULL NULL,
+	req_epoch bigint NOT NULL,
+	last_updated datetime DEFAULT NULL NULL,
+	repository_name varchar(1024) DEFAULT NULL NULL,
+	exported_json text DEFAULT NULL NULL,
+	http_ret_code int DEFAULT 0 NOT NULL,
+	CONSTRAINT x_policy_export_audit_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_resource(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	res_name varchar(4000) DEFAULT NULL NULL,
+	descr varchar(4000) DEFAULT NULL NULL,
+	res_type int DEFAULT 0 NOT NULL,
+	asset_id bigint NOT NULL,
+	parent_id bigint DEFAULT NULL NULL,
+	parent_path varchar(4000) DEFAULT NULL NULL,
+	is_encrypt int DEFAULT 0 NOT NULL,
+	is_recursive int DEFAULT 0 NOT NULL,
+	res_group varchar(1024) DEFAULT NULL NULL,
+	res_dbs text NULL,
+	res_tables text NULL,
+	res_col_fams text NULL,
+	res_cols text NULL,
+	res_udfs text NULL,
+	res_status int DEFAULT 1 NOT NULL,
+	table_type int DEFAULT 0 NOT NULL,
+	col_type int DEFAULT 0 NOT NULL,
+	policy_name varchar(500) DEFAULT NULL NULL,
+	res_topologies text DEFAULT NULL NULL,
+	res_services text DEFAULT NULL NULL,
+	CONSTRAINT x_resource_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_trx_log(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	class_type int DEFAULT 0 NOT NULL,
+	object_id bigint DEFAULT NULL NULL,
+	parent_object_id bigint DEFAULT NULL NULL,
+	parent_object_class_type int DEFAULT 0 NOT NULL,
+	parent_object_name varchar(1024) DEFAULT NULL NULL,
+	object_name varchar(1024) DEFAULT NULL NULL,
+	attr_name varchar(255) DEFAULT NULL NULL,
+	prev_val text DEFAULT NULL NULL,
+	new_val text DEFAULT NULL NULL,
+	trx_id varchar(1024)DEFAULT NULL NULL,
+	action varchar(255) DEFAULT NULL NULL,
+	sess_id varchar(512) DEFAULT NULL NULL,
+	req_id varchar(30) DEFAULT NULL NULL,
+	sess_type varchar(30) DEFAULT NULL NULL,
+	CONSTRAINT x_trx_log_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_perm_map(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	perm_group varchar(1024) DEFAULT NULL NULL,
+	res_id bigint DEFAULT NULL NULL,
+	group_id bigint DEFAULT NULL NULL,
+	user_id bigint DEFAULT NULL NULL,
+	perm_for int DEFAULT 0 NOT NULL,
+	perm_type int DEFAULT 0 NOT NULL,
+	is_recursive int DEFAULT 0 NOT NULL,
+	is_wild_card tinyint DEFAULT 1 NOT NULL,
+	grant_revoke tinyint DEFAULT 1 NOT NULL,
+	ip_address text DEFAULT NULL NULL,
+	CONSTRAINT x_perm_map_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_audit_map(
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	res_id bigint DEFAULT NULL NULL,
+	group_id bigint DEFAULT NULL NULL,
+	user_id bigint DEFAULT NULL NULL,
+	audit_type int DEFAULT 0 NOT NULL,
+	CONSTRAINT x_audit_map_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+CREATE VIEW dbo.vx_trx_log AS select x_trx_log.id AS id,x_trx_log.create_time AS create_time,x_trx_log.update_time AS update_time,x_trx_log.added_by_id AS added_by_id,x_trx_log.upd_by_id AS upd_by_id,x_trx_log.class_type AS class_type,x_trx_log.object_id AS object_id,x_trx_log.parent_object_id AS parent_object_id,x_trx_log.parent_object_class_type AS parent_object_class_type,x_trx_log.attr_name AS attr_name,x_trx_log.parent_object_name AS parent_object_name,x_trx_log.object_name AS object_name,x_trx_log.prev_val AS prev_val,x_trx_log.new_val AS new_val,x_trx_log.trx_id AS trx_id,x_trx_log.action AS action,x_trx_log.sess_id AS sess_id,x_trx_log.req_id AS req_id,x_trx_log.sess_type AS sess_type from x_trx_log where id in(select min(x_trx_log.id) from x_trx_log group by x_trx_log.trx_id)
+GO
+create table dbo.x_service_def(
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	version bigint DEFAULT NULL NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	impl_class_name varchar(1024) DEFAULT NULL NULL,
+	label varchar(1024) DEFAULT NULL NULL,
+	description varchar(1024) DEFAULT NULL NULL,
+	rb_key_label varchar(1024) DEFAULT NULL NULL,
+	rb_key_description varchar(1024) DEFAULT NULL NULL,
+	is_enabled tinyint DEFAULT 1 NULL,
+	CONSTRAINT x_service_def_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_service (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	version bigint DEFAULT NULL NULL,
+	type bigint DEFAULT NULL NULL,
+	name varchar(512) DEFAULT NULL NULL,
+	policy_version bigint DEFAULT NULL NULL,
+	policy_update_time datetime DEFAULT NULL NULL,
+	description varchar(1024) DEFAULT NULL NULL,
+	is_enabled tinyint DEFAULT 0 NOT NULL,
+	CONSTRAINT x_service_def_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	version bigint DEFAULT NULL NULL,
+	service bigint DEFAULT NULL NULL,
+	name varchar(512) DEFAULT NULL NULL,
+	policy_type int DEFAULT 0 NULL,
+	description varchar(1024) DEFAULT NULL NULL,
+	resource_signature varchar(128) DEFAULT NULL NULL,
+	is_enabled tinyint DEFAULT 0 NOT NULL,
+	is_audit_enabled tinyint DEFAULT 0 NOT NULL,
+	CONSTRAINT x_policy_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_service_config_def (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	type varchar(1024) DEFAULT NULL NULL,
+	sub_type varchar(1024) DEFAULT NULL NULL,
+	is_mandatory tinyint DEFAULT 0 NOT NULL,
+	default_value varchar(1024) DEFAULT NULL NULL,
+	validation_reg_ex varchar(1024) DEFAULT NULL NULL,
+	validation_message varchar(1024) DEFAULT NULL NULL,
+	ui_hint varchar(1024) DEFAULT NULL NULL,
+	label varchar(1024) DEFAULT NULL NULL,
+	description varchar(1024) DEFAULT NULL NULL,
+	rb_key_label varchar(1024) DEFAULT NULL NULL,
+	rb_key_description varchar(1024) DEFAULT NULL NULL,
+	rb_key_validation_message varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_service_config_def_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_resource_def (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	type varchar(1024) DEFAULT NULL NULL,
+	res_level bigint DEFAULT NULL NULL,
+	parent bigint DEFAULT NULL NULL,
+	mandatory tinyint DEFAULT 0 NOT NULL,
+	look_up_supported tinyint DEFAULT 0 NOT NULL,
+	recursive_supported tinyint DEFAULT 0 NOT NULL,
+	excludes_supported tinyint DEFAULT 0 NOT NULL,
+	matcher varchar(1024) DEFAULT NULL NULL,
+	matcher_options varchar(1024) DEFAULT NULL NULL,
+	validation_reg_ex varchar(1024) DEFAULT NULL NULL,
+	validation_message varchar(1024) DEFAULT NULL NULL,
+	ui_hint varchar(1024) DEFAULT NULL NULL,
+	label varchar(1024) DEFAULT NULL NULL,
+	description varchar(1024) DEFAULT NULL NULL,
+	rb_key_label varchar(1024) DEFAULT NULL NULL,
+	rb_key_description varchar(1024) DEFAULT NULL NULL,
+	rb_key_validation_message varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_resource_def_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_access_type_def (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	label varchar(1024) DEFAULT NULL NULL,
+	rb_key_label varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_access_type_def_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_access_type_def_grants(
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	atd_id bigint NOT NULL,
+	implied_grant varchar(1024) DEFAULT NULL NULL,
+	CONSTRAINT x_access_type_def_grants_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_condition_def (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	evaluator varchar(1024) DEFAULT NULL NULL,
+	evaluator_options varchar(1024) DEFAULT NULL NULL,
+	validation_reg_ex varchar(1024) DEFAULT NULL NULL,
+	validation_message varchar(1024) DEFAULT NULL NULL,
+	ui_hint varchar(1024) DEFAULT NULL NULL,
+	label varchar(1024) DEFAULT NULL NULL,
+	description varchar(1024) DEFAULT NULL NULL,
+	rb_key_label varchar(1024) DEFAULT NULL NULL,
+	rb_key_description varchar(1024) DEFAULT NULL NULL,
+	rb_key_validation_message varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_condition_def_grants_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_context_enricher_def(
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	enricher varchar(1024) DEFAULT NULL NULL,
+	enricher_options varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_context_enricher_def_grants_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_enum_def (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	default_index bigint DEFAULT NULL NULL,
+	CONSTRAINT x_enum_def_grants_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_enum_element_def (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	enum_def_id bigint NOT NULL,
+	item_id bigint NOT NULL,
+	name varchar(1024) DEFAULT NULL NULL,
+	label varchar(1024) DEFAULT NULL NULL,
+	rb_key_label varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_enum_element_def_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_service_config_map (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	service bigint NOT NULL,
+	config_key varchar(1024) DEFAULT NULL NULL,
+	config_value varchar(4000) DEFAULT NULL NULL,
+	CONSTRAINT x_service_config_map_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_resource (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	policy_id bigint NOT NULL,
+	res_def_id bigint NOT NULL,
+	is_excludes tinyint DEFAULT 0 NOT NULL,
+	is_recursive tinyint DEFAULT 0 NOT NULL,
+	CONSTRAINT x_policy_resource_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_resource_map (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	resource_id bigint NOT NULL,
+	value varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_resource_map_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_item (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	policy_id bigint NOT NULL,
+	delegate_admin tinyint DEFAULT 0 NOT NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_item_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_item_access (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	policy_item_id bigint NOT NULL,
+	type bigint NOT NULL,
+	is_allowed tinyint DEFAULT 0 NOT NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_item_access_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_item_condition (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	policy_item_id bigint NOT NULL,
+	type bigint NOT NULL,
+	value varchar(1024) DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_item_condition_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_item_user_perm (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	policy_item_id bigint NOT NULL,
+	user_id bigint DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_item_user_perm_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_policy_item_group_perm (
+	id bigint IDENTITY NOT NULL,
+	guid varchar(1024) DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	policy_item_id bigint NOT NULL,
+	group_id bigint DEFAULT NULL NULL,
+	sort_order tinyint DEFAULT 0 NULL,
+	CONSTRAINT x_policy_item_group_perm_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_data_hist (
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	obj_guid varchar(1024) NOT NULL,
+	obj_class_type int NOT NULL,
+	obj_id bigint NOT NULL,
+	obj_name varchar(1024) NOT NULL,
+	version bigint DEFAULT NULL NULL,
+	action varchar(512) NOT NULL,
+	from_time datetime NOT NULL,
+	to_time datetime DEFAULT NULL NULL,
+	content text NOT NULL,
+	CONSTRAINT x_data_hist_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_modules_master (
+	id bigint IDENTITY NOT NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	module varchar(1024)NOT NULL,
+	url varchar(1024) DEFAULT NULL NULL,
+	CONSTRAINT x_modules_master_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_user_module_perm (
+	id bigint IDENTITY NOT NULL,
+	user_id bigint DEFAULT NULL NULL,
+	module_id bigint DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	is_allowed int DEFAULT 1 NOT NULL,
+	CONSTRAINT x_user_module_perm_PK_id PRIMARY KEY CLUSTERED(id)
+)
+GO
+create table dbo.x_group_module_perm (
+	id bigint IDENTITY NOT NULL,
+	group_id bigint DEFAULT NULL NULL,
+	module_id bigint DEFAULT NULL NULL,
+	create_time datetime DEFAULT NULL NULL,
+	update_time datetime DEFAULT NULL NULL,
+	added_by_id bigint DEFAULT NULL NULL,
+	upd_by_id bigint DEFAULT NULL NULL,
+	is_allowed int DEFAULT 1 NOT NULL,
+	CONSTRAINT x_group_module_perm_PK_id PRIMARY KEY CLUSTERED(id)
+)
+ALTER TABLE dbo.x_asset ADD CONSTRAINT x_asset_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user(id)
+GO
+ALTER TABLE dbo.x_asset ADD CONSTRAINT x_asset_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_audit_map ADD CONSTRAINT x_audit_map_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_audit_map ADD CONSTRAINT x_audit_map_FK_group_id FOREIGN KEY(group_id) REFERENCES dbo.x_group (id)
+GO
+ALTER TABLE dbo.x_audit_map ADD CONSTRAINT x_audit_map_FK_res_id FOREIGN KEY(res_id) REFERENCES dbo.x_resource (id)
+GO
+ALTER TABLE dbo.x_audit_map ADD CONSTRAINT x_audit_map_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_audit_map ADD CONSTRAINT x_audit_map_FK_user_id FOREIGN KEY(user_id) REFERENCES dbo.x_user (id)
+GO
+ALTER TABLE dbo.x_auth_sess ADD CONSTRAINT x_auth_sess_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_auth_sess ADD CONSTRAINT x_auth_sess_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_auth_sess ADD CONSTRAINT x_auth_sess_FK_user_id FOREIGN KEY(user_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_cred_store ADD CONSTRAINT x_cred_store_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_cred_store ADD CONSTRAINT x_cred_store_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_db_base ADD CONSTRAINT x_db_base_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_db_base ADD CONSTRAINT x_db_base_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_group ADD CONSTRAINT x_group_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_group ADD CONSTRAINT x_group_FK_cred_store_id FOREIGN KEY(cred_store_id) REFERENCES dbo.x_cred_store (id)
+GO
+ALTER TABLE dbo.x_group ADD CONSTRAINT x_group_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_group_groups ADD CONSTRAINT x_group_groups_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_group_groups ADD CONSTRAINT x_group_groups_FK_group_id FOREIGN KEY(group_id) REFERENCES dbo.x_group (id)
+GO
+ALTER TABLE dbo.x_group_groups ADD CONSTRAINT x_group_groups_FK_p_group_id FOREIGN KEY(p_group_id) REFERENCES dbo.x_group (id)
+GO
+ALTER TABLE dbo.x_group_users ADD CONSTRAINT x_group_users_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_group_users ADD CONSTRAINT x_group_users_FK_p_group_id FOREIGN KEY(p_group_id) REFERENCES dbo.x_group (id)
+GO
+ALTER TABLE dbo.x_group_users ADD CONSTRAINT x_group_users_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_group_users ADD CONSTRAINT x_group_users_FK_user_id FOREIGN KEY(user_id) REFERENCES dbo.x_user (id)
+GO
+ALTER TABLE dbo.x_perm_map ADD CONSTRAINT x_perm_map_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_perm_map ADD CONSTRAINT x_perm_map_FK_group_id FOREIGN KEY(group_id) REFERENCES dbo.x_group (id)
+GO
+ALTER TABLE dbo.x_perm_map ADD CONSTRAINT x_perm_map_FK_res_id FOREIGN KEY(res_id) REFERENCES dbo.x_resource (id)
+GO
+ALTER TABLE dbo.x_perm_map ADD CONSTRAINT x_perm_map_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_perm_map ADD CONSTRAINT x_perm_map_FK_user_id FOREIGN KEY(user_id) REFERENCES dbo.x_user (id)
+GO
+ALTER TABLE dbo.x_policy_export_audit ADD CONSTRAINT x_policy_export_audit_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_export_audit ADD CONSTRAINT x_policy_export_audit_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_portal_user ADD CONSTRAINT x_portal_user_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_portal_user ADD CONSTRAINT x_portal_user_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_portal_user_role ADD CONSTRAINT x_portal_user_role_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_portal_user_role ADD CONSTRAINT x_portal_user_role_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_portal_user_role ADD CONSTRAINT x_portal_user_role_FK_user_id FOREIGN KEY(user_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_resource ADD CONSTRAINT x_resource_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_resource ADD CONSTRAINT x_resource_FK_asset_id FOREIGN KEY(asset_id) REFERENCES dbo.x_asset (id)
+GO
+ALTER TABLE dbo.x_resource ADD CONSTRAINT x_resource_FK_parent_id FOREIGN KEY(parent_id) REFERENCES dbo.x_resource (id)
+GO
+ALTER TABLE dbo.x_resource ADD CONSTRAINT x_resource_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_trx_log ADD CONSTRAINT x_trx_log_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_trx_log ADD CONSTRAINT x_trx_log_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_user ADD CONSTRAINT x_user_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_user ADD CONSTRAINT x_user_FK_cred_store_id FOREIGN KEY(cred_store_id) REFERENCES dbo.x_cred_store (id)
+GO
+ALTER TABLE dbo.x_user ADD CONSTRAINT x_user_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service_def ADD CONSTRAINT x_service_def_FK_added_by_id FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service_def ADD CONSTRAINT x_service_def_FK_upd_by_id FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service ADD CONSTRAINT x_service_FK_added_by_id FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service ADD CONSTRAINT x_service_FK_upd_by_id FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service ADD CONSTRAINT x_service_FK_type FOREIGN KEY(type)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_policy ADD CONSTRAINT x_policy_FK_added_by_id FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy ADD CONSTRAINT x_policy_FK_upd_by_id FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy ADD CONSTRAINT x_policy_FK_service FOREIGN KEY(service)REFERENCES dbo.x_service (id)
+GO
+ALTER TABLE dbo.x_service_config_def ADD CONSTRAINT x_service_config_def_FK_defid FOREIGN KEY(def_id)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_service_config_def ADD CONSTRAINT x_service_conf_def_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service_config_def ADD CONSTRAINT x_service_conf_def_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_resource_def ADD CONSTRAINT x_resource_def_FK_parent FOREIGN KEY(parent)REFERENCES dbo.x_resource_def (id)
+GO
+ALTER TABLE dbo.x_resource_def ADD CONSTRAINT x_resource_def_FK_defid FOREIGN KEY(def_id)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_resource_def ADD CONSTRAINT x_resource_def_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_resource_def ADD CONSTRAINT x_resource_def_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_access_type_def ADD CONSTRAINT x_access_type_def_FK_defid FOREIGN KEY(def_id)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_access_type_def ADD CONSTRAINT x_access_type_def_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_access_type_def ADD CONSTRAINT x_access_type_def_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_access_type_def_grants ADD CONSTRAINT x_atd_grants_FK_atdid FOREIGN KEY(atd_id)REFERENCES dbo.x_access_type_def (id)
+GO
+ALTER TABLE dbo.x_access_type_def_grants ADD CONSTRAINT x_access_type_def_grants_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_access_type_def_grants ADD CONSTRAINT x_access_type_def_grants_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_condition_def ADD CONSTRAINT x_policy_condition_def_FK_defid FOREIGN KEY(def_id)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_policy_condition_def ADD CONSTRAINT x_policy_condition_def_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_condition_def ADD CONSTRAINT x_policy_condition_def_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_context_enricher_def ADD CONSTRAINT x_context_enricher_def_FK_defid FOREIGN KEY(def_id)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_context_enricher_def ADD CONSTRAINT x_context_enricher_def_FK_added_by_id FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_context_enricher_def ADD CONSTRAINT x_context_enricher_def_FK_upd_by_id FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_enum_def ADD CONSTRAINT x_enum_def_FK_defid FOREIGN KEY(def_id)REFERENCES dbo.x_service_def (id)
+GO
+ALTER TABLE dbo.x_enum_element_def ADD CONSTRAINT x_enum_element_def_FK_defid FOREIGN KEY(enum_def_id)REFERENCES dbo.x_enum_def (id)
+GO
+ALTER TABLE dbo.x_enum_def ADD CONSTRAINT x_enum_def_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_enum_def ADD CONSTRAINT x_enum_def_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service_config_map ADD CONSTRAINT x_service_config_map_FK_ FOREIGN KEY(service)REFERENCES dbo.x_service (id)
+GO
+ALTER TABLE dbo.x_service_config_map ADD CONSTRAINT x_service_config_map_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_service_config_map ADD CONSTRAINT x_service_config_map_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_resource ADD CONSTRAINT x_policy_resource_FK_policy_id FOREIGN KEY(policy_id)REFERENCES dbo.x_policy (id)
+GO
+ALTER TABLE dbo.x_policy_resource ADD CONSTRAINT x_policy_resource_FK_res_def_id FOREIGN KEY(res_def_id)REFERENCES dbo.x_resource_def (id)
+GO
+ALTER TABLE dbo.x_policy_resource ADD CONSTRAINT x_policy_resource_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_resource ADD CONSTRAINT x_policy_resource_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_resource_map ADD CONSTRAINT x_policy_resource_map_FK_resource_id FOREIGN KEY(resource_id)REFERENCES dbo.x_policy_resource (id)
+GO
+ALTER TABLE dbo.x_policy_resource_map ADD CONSTRAINT x_policy_resource_map_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_resource_map ADD CONSTRAINT x_policy_resource_map_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item ADD CONSTRAINT x_policy_item_FK_policy_id FOREIGN KEY(policy_id)REFERENCES dbo.x_policy (id)
+GO
+ALTER TABLE dbo.x_policy_item ADD CONSTRAINT x_policy_item_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item ADD CONSTRAINT x_policy_item_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_access ADD CONSTRAINT x_policy_item_access_FK_pi_id FOREIGN KEY(policy_item_id)REFERENCES dbo.x_policy_item (id)
+GO
+ALTER TABLE dbo.x_policy_item_access ADD CONSTRAINT x_policy_item_access_FK_atd_id FOREIGN KEY(type)REFERENCES dbo.x_access_type_def (id)
+GO
+ALTER TABLE dbo.x_policy_item_access ADD CONSTRAINT x_policy_item_access_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_access ADD CONSTRAINT x_policy_item_access_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_condition ADD CONSTRAINT x_policy_item_condition_FK_pi_id FOREIGN KEY(policy_item_id)REFERENCES dbo.x_policy_item (id)
+GO
+ALTER TABLE dbo.x_policy_item_condition ADD CONSTRAINT x_policy_item_condition_FK_pcd_id FOREIGN KEY(type)REFERENCES dbo.x_policy_condition_def (id)
+GO
+ALTER TABLE dbo.x_policy_item_condition ADD CONSTRAINT x_policy_item_condition_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_condition ADD CONSTRAINT x_policy_item_condition_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_user_perm ADD CONSTRAINT x_policy_item_user_perm_FK_pi_id FOREIGN KEY(policy_item_id)REFERENCES dbo.x_policy_item (id)
+GO
+ALTER TABLE dbo.x_policy_item_user_perm ADD CONSTRAINT x_policy_item_user_perm_FK_user_id FOREIGN KEY(user_id)REFERENCES dbo.x_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_user_perm ADD CONSTRAINT x_policy_item_user_perm_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_user_perm ADD CONSTRAINT x_policy_item_user_perm_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_group_perm ADD CONSTRAINT x_policy_item_group_perm_FK_pi_id FOREIGN KEY(policy_item_id)REFERENCES dbo.x_policy_item (id)
+GO
+ALTER TABLE dbo.x_policy_item_group_perm ADD CONSTRAINT x_policy_item_group_perm_FK_group_id FOREIGN KEY(group_id)REFERENCES dbo.x_group (id)
+GO
+ALTER TABLE dbo.x_policy_item_group_perm ADD CONSTRAINT x_policy_item_group_perm_FK_added_by FOREIGN KEY(added_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_policy_item_group_perm ADD CONSTRAINT x_policy_item_group_perm_FK_upd_by FOREIGN KEY(upd_by_id)REFERENCES dbo.x_portal_user (id)
+GO
+ALTER TABLE dbo.x_user_module_perm ADD CONSTRAINT x_user_module_perm_FK_moduleid FOREIGN KEY(module_id) REFERENCES dbo.x_modules_master(id)
+GO
+ALTER TABLE dbo.x_user_module_perm ADD CONSTRAINT x_user_module_perm_FK_userid FOREIGN KEY(user_id) REFERENCES dbo.x_portal_user(id)
+GO
+ALTER TABLE dbo.x_group_module_perm ADD CONSTRAINT x_grp_module_perm_FK_module_id FOREIGN KEY(module_id) REFERENCES dbo.x_modules_master(id)
+GO
+ALTER TABLE dbo.x_group_module_perm ADD CONSTRAINT x_grp_module_perm_FK_group_id FOREIGN KEY(group_id) REFERENCES dbo.x_group(id)
+GO
+CREATE NONCLUSTERED INDEX x_asset_cr_time ON dbo.x_asset(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_asset_FK_added_by_id ON dbo.x_asset(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_asset_FK_upd_by_id ON dbo.x_asset(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_asset_up_time ON dbo.x_asset(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_cr_time ON dbo.x_audit_map(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_FK_added_by_id ON dbo.x_audit_map(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_FK_group_id ON dbo.x_audit_map(group_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_FK_res_id ON dbo.x_audit_map(res_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_FK_upd_by_id ON dbo.x_audit_map(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_FK_user_id ON dbo.x_audit_map(user_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_audit_map_up_time ON dbo.x_audit_map(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_auth_sess_cr_time ON dbo.x_auth_sess(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_auth_sess_FK_added_by_id ON dbo.x_auth_sess(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_auth_sess_FK_upd_by_id ON dbo.x_auth_sess(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_auth_sess_FK_user_id ON dbo.x_auth_sess(user_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_auth_sess_up_time ON dbo.x_auth_sess(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_cred_store_cr_time ON dbo.x_cred_store(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_cred_store_FK_added_by_id ON dbo.x_cred_store(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_cred_store_FK_upd_by_id ON dbo.x_cred_store(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_cred_store_up_time ON dbo.x_cred_store(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_db_base_cr_time ON dbo.x_db_base(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_db_base_FK_added_by_id ON dbo.x_db_base(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_db_base_FK_upd_by_id ON dbo.x_db_base(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_db_base_up_time ON dbo.x_db_base(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_cr_time ON dbo.x_group(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_FK_added_by_id ON dbo.x_group(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_FK_cred_store_id ON dbo.x_group(cred_store_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_FK_upd_by_id ON dbo.x_group(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_groups_cr_time ON dbo.x_group_groups(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_groups_FK_added_by_id ON dbo.x_group_groups(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_groups_FK_group_id ON dbo.x_group_groups(group_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_groups_FK_p_group_id ON dbo.x_group_groups(p_group_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_groups_FK_upd_by_id ON dbo.x_group_groups(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_groups_up_time ON dbo.x_group_groups(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_up_time ON dbo.x_group(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_users_cr_time ON dbo.x_group_users(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_users_FK_added_by_id ON dbo.x_group_users(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_users_FK_p_group_id ON dbo.x_group_users(p_group_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_users_FK_upd_by_id ON dbo.x_group_users(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_users_FK_user_id ON dbo.x_group_users(user_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_group_users_up_time ON dbo.x_group_users(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_cr_time ON dbo.x_perm_map(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_FK_added_by_id ON dbo.x_perm_map(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_FK_group_id ON dbo.x_perm_map(group_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_FK_res_id ON dbo.x_perm_map(res_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_FK_upd_by_id ON dbo.x_perm_map(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_FK_user_id ON dbo.x_perm_map(user_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_perm_map_up_time ON dbo.x_perm_map(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_export_audit_cr_time ON dbo.x_policy_export_audit(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_export_audit_FK_added_by_id ON dbo.x_policy_export_audit(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_export_audit_FK_upd_by_id ON dbo.x_policy_export_audit(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_export_audit_up_time ON dbo.x_policy_export_audit(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_cr_time ON dbo.x_portal_user(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_email ON dbo.x_portal_user(email ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_FK_added_by_id ON dbo.x_portal_user(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_FK_upd_by_id ON dbo.x_portal_user(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_name ON dbo.x_portal_user(first_name ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_role_cr_time ON dbo.x_portal_user_role(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_role_FK_added_by_id ON dbo.x_portal_user_role(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_role_FK_upd_by_id ON dbo.x_portal_user_role(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_role_FK_user_id ON dbo.x_portal_user_role(user_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_role_up_time ON dbo.x_portal_user_role(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_portal_user_up_time ON dbo.x_portal_user(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_cr_time ON dbo.x_resource(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_FK_added_by_id ON dbo.x_resource(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_FK_asset_id ON dbo.x_resource(asset_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_FK_parent_id ON dbo.x_resource(parent_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_FK_upd_by_id ON dbo.x_resource(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_up_time ON dbo.x_resource(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_trx_log_cr_time ON dbo.x_trx_log(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_trx_log_FK_added_by_id ON dbo.x_trx_log(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_trx_log_FK_upd_by_id ON dbo.x_trx_log(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_trx_log_up_time ON dbo.x_trx_log(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_user_cr_time ON dbo.x_user(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_user_FK_added_by_id ON dbo.x_user(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_user_FK_cred_store_id ON dbo.x_user(cred_store_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_user_FK_upd_by_id ON dbo.x_user(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_user_up_time ON dbo.x_user(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_cr_time ON dbo.xa_access_audit(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_event_time ON dbo.xa_access_audit(event_time ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_added_by_id ON dbo.xa_access_audit(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_upd_by_id ON dbo.xa_access_audit(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX xa_access_audit_up_time ON dbo.xa_access_audit(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_def_added_by_id ON dbo.x_service_def(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_def_upd_by_id ON dbo.x_service_def(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_def_cr_time ON dbo.x_service_def(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_def_up_time ON dbo.x_service_def(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_added_by_id ON dbo.x_service(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_upd_by_id ON dbo.x_service(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_cr_time ON dbo.x_service(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_up_time ON dbo.x_service(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_service_type ON dbo.x_service(type ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_added_by_id ON dbo.x_policy(added_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_upd_by_id ON dbo.x_policy(upd_by_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_cr_time ON dbo.x_policy(create_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_up_time ON dbo.x_policy(update_time ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_service ON dbo.x_policy(service ASC)
+GO
+CREATE NONCLUSTERED INDEX x_policy_resource_signature ON dbo.x_policy(resource_signature ASC)
+GO
+CREATE NONCLUSTERED INDEX x_resource_def_parent ON dbo.x_resource_def(parent ASC)
+GO
+CREATE NONCLUSTERED INDEX x_usr_module_perm_idx_moduleid ON dbo.x_user_module_perm(module_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_usr_module_perm_idx_userid ON dbo.x_user_module_perm(user_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_grp_module_perm_idx_groupid ON dbo.x_group_module_perm(group_id ASC)
+GO
+CREATE NONCLUSTERED INDEX x_grp_module_perm_idx_moduleid ON dbo.x_group_module_perm(module_id ASC)
+GO
+insert into x_portal_user (create_time,update_time,first_name,last_name,pub_scr_name,login_id,password,email,status) values (GETDATE(),GETDATE(),'Admin','','Admin','admin','ceb4f32325eda6142bd65215f4c0f371','',1)
+GO
+insert into x_portal_user_role (create_time,update_time,user_id,user_role,status) values (GETDATE(),GETDATE(),1,'ROLE_SYS_ADMIN',1)
+GO
+insert into x_user (create_time,update_time,user_name,status,descr) values (GETDATE(),GETDATE(),'admin',0,'Administrator')
+GO
+insert into x_group (added_by_id,create_time,descr,group_type,group_name,status,update_time,upd_by_id) values (1,GETDATE(),'public group',0,'public',0,GETDATE(),1)
+GO
+INSERT INTO x_modules_master(create_time,update_time,added_by_id,upd_by_id,module,url) VALUES(GETDATE(),GETDATE(),1,1,'Resource Based Policies','')
+GO
+INSERT INTO x_modules_master(create_time,update_time,added_by_id,upd_by_id,module,url) VALUES(GETDATE(),GETDATE(),1,1,'Users/Groups','')
+GO
+INSERT INTO x_modules_master(create_time,update_time,added_by_id,upd_by_id,module,url) VALUES(GETDATE(),GETDATE(),1,1,'Reports','')
+GO
+INSERT INTO x_modules_master(create_time,update_time,added_by_id,upd_by_id,module,url) VALUES(GETDATE(),GETDATE(),1,1,'Audit','')
+GO
+INSERT INTO x_modules_master(create_time,update_time,added_by_id,upd_by_id,module,url) VALUES(GETDATE(),GETDATE(),1,1,'Key Manager','')
+GO
+insert into x_portal_user (create_time,update_time,first_name,last_name,pub_scr_name,login_id,password,email,status) values (GETDATE(),GETDATE(),'rangerusersync','','rangerusersync','rangerusersync','70b8374d3dfe0325aaa5002a688c7e3b','rangerusersync',1)
+GO
+insert into x_portal_user_role (create_time,update_time,user_id,user_role,status) values (GETDATE(),GETDATE(),2,'ROLE_SYS_ADMIN',1)
+GO
+insert into x_user (create_time,update_time,user_name,status,descr) values (GETDATE(),GETDATE(),'rangerusersync',0,'rangerusersync')
+GO
+insert into x_portal_user (create_time,update_time,first_name,last_name,pub_scr_name,login_id,password,email,status) values (GETDATE(),GETDATE(),'keyadmin','','keyadmin','keyadmin','a05f34d2dce2b4688fa82e82a89ba958','keyadmin',1)
+GO
+insert into x_portal_user_role (create_time,update_time,user_id,user_role,status) values (GETDATE(),GETDATE(),3,'ROLE_KEY_ADMIN',1)
+GO
+insert into x_user (create_time,update_time,user_name,status,descr) values (GETDATE(),GETDATE(),'keyadmin',0,'keyadmin')
+GO
+exit
\ No newline at end of file