Bug 2120712
| Summary: | Replace simple mssql_input_sql_file with pre and post variables | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | Sergei Petrosian <spetrosi> | |
| Component: | ansible-collection-microsoft-sql | Assignee: | Sergei Petrosian <spetrosi> | |
| Status: | CLOSED ERRATA | QA Contact: | Daniel Yeisley <dyeisley> | |
| Severity: | unspecified | Docs Contact: | Alexandra Nikandrova <anikandr> | |
| Priority: | unspecified | |||
| Version: | 9.1 | CC: | anikandr, gfialova, lmanasko | |
| Target Milestone: | rc | Keywords: | Triaged | |
| Target Release: | --- | Flags: | pm-rhel:
mirror+
|
|
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | ansible-collection-microsoft-sql-1.2.4-1.el9 | Doc Type: | Enhancement | |
| Doc Text: |
The RN description for this BZ is covered as part of BZ#2066337.
link: https://bugzilla.redhat.com/show_bug.cgi?id=2066337
|
Story Points: | --- | |
| Clone Of: | ||||
| : | 2120713 (view as bug list) | Environment: | ||
| Last Closed: | 2022-11-15 10:29:27 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 2120713, 2129333, 2129872 | |||
| Deadline: | 2022-08-29 | |||
|
Description
Sergei Petrosian
2022-08-23 15:09:53 UTC
I set up two systems. One with RHEL 9.1 to act as the control node and one with RHEL 8.7 to run SQL Server.
[root@isvqe-01 Certification]# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.1 Beta (Plow)
[root@isvqe-02 Certification]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.7 Beta (Ootpa)
I used the following yml on node 1.
[root@isvqe-01 Certification]# cat site.yml
---
- hosts: all
vars:
mssql_version: 2019
mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
mssql_accept_microsoft_sql_server_standard_eula: true
mssql_password: redhat123!
mssql_edition: Developer
mssql_enable_sql_agent: true
mssql_install_fts: true
mssql_enable_ha: false
mssql_pre_input_sql_file:
- results/create_db.sql
mssql_post_input_sql_file:
- results/load_tables.sql
roles:
- role: microsoft.sql.server
And the following sql files.
[root@isvqe-01 Certification]# cat results/load_tables.sql
USE DS2
GO
-- Tables
CREATE TABLE CUSTOMERS
(
CUSTOMERID INT IDENTITY NOT NULL,
FIRSTNAME VARCHAR(50) NOT NULL,
LASTNAME VARCHAR(50) NOT NULL,
ADDRESS1 VARCHAR(50) NOT NULL,
ADDRESS2 VARCHAR(50),
CITY VARCHAR(50) NOT NULL,
STATE VARCHAR(50),
ZIP INT,
COUNTRY VARCHAR(50) NOT NULL,
REGION TINYINT NOT NULL,
EMAIL VARCHAR(50),
PHONE VARCHAR(50),
CREDITCARDTYPE TINYINT NOT NULL,
CREDITCARD VARCHAR(50) NOT NULL,
CREDITCARDEXPIRATION VARCHAR(50) NOT NULL,
USERNAME VARCHAR(50) NOT NULL,
PASSWORD VARCHAR(50) NOT NULL,
AGE TINYINT,
INCOME INT,
GENDER VARCHAR(2)
)
ON DS_CUST_FG
GO
CREATE TABLE CUST_HIST
(
CUSTOMERID INT NOT NULL,
ORDERID INT NOT NULL,
PROD_ID INT NOT NULL
)
ON DS_CUST_FG
GO
CREATE TABLE ORDERS
(
ORDERID INT IDENTITY NOT NULL,
ORDERDATE DATETIME NOT NULL,
CUSTOMERID INT NOT NULL,
NETAMOUNT MONEY NOT NULL,
TAX MONEY NOT NULL,
TOTALAMOUNT MONEY NOT NULL
)
ON DS_ORDERS_FG
GO
CREATE TABLE ORDERLINES
(
ORDERLINEID SMALLINT NOT NULL,
ORDERID INT NOT NULL,
PROD_ID INT NOT NULL,
QUANTITY SMALLINT NOT NULL,
ORDERDATE DATETIME NOT NULL
)
ON DS_ORDERS_FG
GO
CREATE TABLE PRODUCTS
(
PROD_ID INT IDENTITY NOT NULL,
CATEGORY TINYINT NOT NULL,
TITLE VARCHAR(50) NOT NULL,
ACTOR VARCHAR(50) NOT NULL,
PRICE MONEY NOT NULL,
SPECIAL TINYINT,
COMMON_PROD_ID INT NOT NULL
)
ON DS_MISC_FG
GO
CREATE TABLE INVENTORY
(
PROD_ID INT NOT NULL,
QUAN_IN_STOCK INT NOT NULL,
SALES INT NOT NULL
)
ON DS_MISC_FG
GO
CREATE TABLE CATEGORIES
(
CATEGORY TINYINT IDENTITY NOT NULL,
CATEGORYNAME VARCHAR(50) NOT NULL,
)
ON DS_MISC_FG
GO
SET IDENTITY_INSERT CATEGORIES ON
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (1,'Action')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (2,'Animation')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (3,'Children')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (4,'Classics')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (5,'Comedy')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (6,'Documentary')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (7,'Drama')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (8,'Family')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (9,'Foreign')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (10,'Games')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (11,'Horror')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (12,'Music')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (13,'New')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (14,'Sci-Fi')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (15,'Sports')
INSERT INTO CATEGORIES (CATEGORY, CATEGORYNAME) VALUES (16,'Travel')
GO
CREATE TABLE REORDER
(
PROD_ID INT NOT NULL,
DATE_LOW DATETIME NOT NULL,
QUAN_LOW INT NOT NULL,
DATE_REORDERED DATETIME,
QUAN_REORDERED INT,
DATE_EXPECTED DATETIME
)
ON DS_MISC_FG
GO
-- This keeps the number of items with low QUAN_IN_STOCK constant so that the rollback rate is constant
CREATE TRIGGER RESTOCK ON INVENTORY AFTER UPDATE
AS
DECLARE @changedPROD_ID INT, @oldQUAN_IN_STOCK INT, @newQUAN_IN_STOCK INT;
IF UPDATE(QUAN_IN_STOCK)
BEGIN
SELECT @changedPROD_ID = i.PROD_ID, @oldQUAN_IN_STOCK = d.QUAN_IN_STOCK, @newQUAN_IN_STOCK = i.QUAN_IN_STOCK
FROM inserted i INNER JOIN deleted d ON i.PROD_ID = d.PROD_ID
IF @newQUAN_IN_STOCK < 3 -- assumes quantity ordered is 1, 2, or 3 - change if different
BEGIN
INSERT INTO REORDER
(
PROD_ID,
DATE_LOW,
QUAN_LOW
)
VALUES
(
@changedPROD_ID,
GETDATE(),
@newQUAN_IN_STOCK
)
UPDATE INVENTORY SET QUAN_IN_STOCK = @oldQUAN_IN_STOCK WHERE PROD_ID = @changedPROD_ID
END
END
RETURN
GO
DECLARE @db_id int, @tbl_id int
USE DS2
SET @db_id = DB_ID('DS2')
SET @tbl_id = OBJECT_ID('DS2..CATEGORIES')
DBCC PINTABLE (@db_id, @tbl_id)
SET @db_id = DB_ID('DS2')
SET @tbl_id = OBJECT_ID('DS2..PRODUCTS')
DBCC PINTABLE (@db_id, @tbl_id)
USE DS2
GO
-- sqlserverds2_load_cust.sql
use DS2
go
alter database DS2 set recovery bulk_logged
go
bulk insert CUSTOMERS from '/ds2/data_files/cust/us_cust.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUSTOMERS from '/ds2/data_files/cust/row_cust.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
-- sqlserverds2_load_orders.sql
set dateformat ymd
go
bulk insert ORDERS from '/ds2/data_files/orders/jan_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/feb_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/mar_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/apr_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/may_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/jun_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/jul_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/aug_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/sep_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/oct_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/nov_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERS from '/ds2/data_files/orders/dec_orders.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
-- sqlserverds2_load_orderlines.sql
bulk insert ORDERLINES from '/ds2/data_files/orders/jan_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/feb_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/mar_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/apr_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/may_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/jun_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/jul_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/aug_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/sep_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/oct_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/nov_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert ORDERLINES from '/ds2/data_files/orders/dec_orderlines.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
-- sqlserverds2_load_cust_hist.sql
bulk insert CUST_HIST from '/ds2/data_files/orders/jan_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/feb_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/mar_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/apr_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/may_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/jun_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/jul_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/aug_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/sep_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/oct_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/nov_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
bulk insert CUST_HIST from '/ds2/data_files/orders/dec_cust_hist.csv' with (TABLOCK, FIELDTERMINATOR = ',')
go
-- sqlserverds2_load_prod.sql
bulk insert PRODUCTS from '/ds2/data_files/prod/prod.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
-- sqlserverds2_load_inv.sql
bulk insert INVENTORY from '/ds2/data_files/prod/inv.csv' with (KEEPIDENTITY, TABLOCK, FIELDTERMINATOR = ',')
go
alter database DS2 set recovery full
go
-- sqlserverds2_create_ind.sql
USE DS2
GO
ALTER TABLE CATEGORIES ADD CONSTRAINT PK_CATEGORIES PRIMARY KEY CLUSTERED
(
CATEGORY
)
ON DS_MISC_FG
GO
ALTER TABLE CUSTOMERS ADD CONSTRAINT PK_CUSTOMERS PRIMARY KEY CLUSTERED
(
CUSTOMERID
)
ON DS_CUST_FG
GO
CREATE UNIQUE INDEX IX_CUST_UN_PW ON CUSTOMERS
(
USERNAME,
PASSWORD
)
ON DS_IND_FG
GO
CREATE INDEX IX_CUST_HIST_CUSTOMERID ON CUST_HIST
(
CUSTOMERID
)
ON DS_IND_FG
GO
CREATE INDEX IX_CUST_HIST_CUSTOMERID_PRODID ON CUST_HIST
(
CUSTOMERID ASC,
PROD_ID ASC
)
ON DS_IND_FG
GO
ALTER TABLE CUST_HIST
ADD CONSTRAINT FK_CUST_HIST_CUSTOMERID FOREIGN KEY (CUSTOMERID)
REFERENCES CUSTOMERS (CUSTOMERID)
ON DELETE CASCADE
GO
ALTER TABLE ORDERS ADD CONSTRAINT PK_ORDERS PRIMARY KEY CLUSTERED
(
ORDERID
)
ON DS_ORDERS_FG
GO
CREATE INDEX IX_ORDER_CUSTID ON ORDERS
(
CUSTOMERID
)
ON DS_IND_FG
GO
ALTER TABLE ORDERLINES ADD CONSTRAINT PK_ORDERLINES PRIMARY KEY CLUSTERED
(
ORDERID,
ORDERLINEID
)
ON DS_ORDERS_FG
GO
ALTER TABLE ORDERLINES ADD CONSTRAINT FK_ORDERID FOREIGN KEY (ORDERID)
REFERENCES ORDERS (ORDERID)
ON DELETE CASCADE
GO
ALTER TABLE INVENTORY ADD CONSTRAINT PK_INVENTORY PRIMARY KEY CLUSTERED
(
PROD_ID
)
ON DS_MISC_FG
GO
ALTER TABLE PRODUCTS ADD CONSTRAINT PK_PRODUCTS PRIMARY KEY CLUSTERED
(
PROD_ID
)
ON DS_MISC_FG
GO
CREATE INDEX IX_PROD_PRODID ON PRODUCTS
(
PROD_ID ASC
)
INCLUDE (TITLE)
ON DS_IND_FG
GO
CREATE INDEX IX_PROD_PRODID_COMMON_PRODID ON PRODUCTS
(
PROD_ID ASC,
COMMON_PROD_ID ASC
)
INCLUDE (TITLE, ACTOR)
ON DS_IND_FG
GO
CREATE INDEX IX_PROD_SPECIAL_CATEGORY_PRODID ON PRODUCTS
(
SPECIAL ASC,
CATEGORY ASC,
PROD_ID ASC
)
INCLUDE (TITLE, ACTOR, PRICE, COMMON_PROD_ID)
ON DS_IND_FG
GO
EXEC sp_fulltext_database 'enable'
EXEC sp_fulltext_catalog 'FULLTEXTCAT_DSPROD', 'create', '/home/sa/' --Added a placeholder by GSK
EXEC sp_fulltext_table 'PRODUCTS', 'create', 'FULLTEXTCAT_DSPROD', 'PK_PRODUCTS'
EXEC sp_fulltext_column 'PRODUCTS', 'ACTOR', 'add'
EXEC sp_fulltext_column 'PRODUCTS', 'TITLE', 'add'
EXEC sp_fulltext_table 'PRODUCTS', 'activate'
EXEC sp_fulltext_catalog 'FULLTEXTCAT_DSPROD', 'start_full'
GO
CREATE INDEX IX_PROD_CATEGORY ON PRODUCTS
(
CATEGORY
)
ON DS_IND_FG
GO
CREATE INDEX IX_PROD_SPECIAL ON PRODUCTS
(
SPECIAL
)
ON DS_IND_FG
GO
CREATE STATISTICS stat_cust_cctype_username ON CUSTOMERS(CREDITCARDTYPE, USERNAME)
GO
CREATE STATISTICS stat_cust_cctype_customerid ON CUSTOMERS(CREDITCARDTYPE, CUSTOMERID)
GO
CREATE STATISTICS stat_prod_prodid_special ON PRODUCTS(PROD_ID, SPECIAL)
GO
CREATE STATISTICS stat_prod_category_prodid ON PRODUCTS(CATEGORY, PROD_ID)
GO
-- sqlserverds2_create_sp.sql
-- NEW_CUSTOMER
USE DS2
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'NEW_CUSTOMER' AND type = 'P')
DROP PROCEDURE NEW_CUSTOMER
GO
USE DS2
GO
CREATE PROCEDURE NEW_CUSTOMER
(
@firstname_in VARCHAR(50),
@lastname_in VARCHAR(50),
@address1_in VARCHAR(50),
@address2_in VARCHAR(50),
@city_in VARCHAR(50),
@state_in VARCHAR(50),
@zip_in INT,
@country_in VARCHAR(50),
@region_in TINYINT,
@email_in VARCHAR(50),
@phone_in VARCHAR(50),
@creditcardtype_in TINYINT,
@creditcard_in VARCHAR(50),
@creditcardexpiration_in VARCHAR(50),
@username_in VARCHAR(50),
@password_in VARCHAR(50),
@age_in TINYINT,
@income_in INT,
@gender_in VARCHAR(1)
)
AS
IF (SELECT COUNT(*) FROM CUSTOMERS WHERE USERNAME=@username_in) = 0
BEGIN
INSERT INTO CUSTOMERS
(
FIRSTNAME,
LASTNAME,
ADDRESS1,
ADDRESS2,
CITY,
STATE,
ZIP,
COUNTRY,
REGION,
EMAIL,
PHONE,
CREDITCARDTYPE,
CREDITCARD,
CREDITCARDEXPIRATION,
USERNAME,
PASSWORD,
AGE,
INCOME,
GENDER
)
VALUES
(
@firstname_in,
@lastname_in,
@address1_in,
@address2_in,
@city_in,
@state_in,
@zip_in,
@country_in,
@region_in,
@email_in,
@phone_in,
@creditcardtype_in,
@creditcard_in,
@creditcardexpiration_in,
@username_in,
@password_in,
@age_in,
@income_in,
@gender_in
)
SELECT @@IDENTITY
END
ELSE
SELECT 0
GO
-- LOGIN
USE DS2
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'LOGIN' AND type = 'P')
DROP PROCEDURE LOGIN
GO
USE DS2
GO
CREATE PROCEDURE LOGIN
(
@username_in VARCHAR(50),
@password_in VARCHAR(50)
)
AS
DECLARE @customerid_out INT
SELECT @customerid_out=CUSTOMERID FROM CUSTOMERS WHERE USERNAME=@username_in AND PASSWORD=@password_in
IF (@@ROWCOUNT > 0)
BEGIN
SELECT @customerid_out
SELECT derivedtable1.TITLE, derivedtable1.ACTOR, PRODUCTS_1.TITLE AS RelatedPurchase
FROM (SELECT PRODUCTS.TITLE, PRODUCTS.ACTOR, PRODUCTS.PROD_ID, PRODUCTS.COMMON_PROD_ID
FROM CUST_HIST INNER JOIN
PRODUCTS ON CUST_HIST.PROD_ID = PRODUCTS.PROD_ID
WHERE (CUST_HIST.CUSTOMERID = @customerid_out)) AS derivedtable1 INNER JOIN
PRODUCTS AS PRODUCTS_1 ON derivedtable1.COMMON_PROD_ID = PRODUCTS_1.PROD_ID
END
ELSE
SELECT 0
GO
USE DS2
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'BROWSE_BY_CATEGORY' AND type = 'P')
DROP PROCEDURE BROWSE_BY_CATEGORY
GO
USE DS2
GO
CREATE PROCEDURE BROWSE_BY_CATEGORY
(
@batch_size_in INT,
@category_in INT
)
AS
SET ROWCOUNT @batch_size_in
SELECT * FROM PRODUCTS WHERE CATEGORY=@category_in and SPECIAL=1
SET ROWCOUNT 0
GO
USE DS2
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'BROWSE_BY_ACTOR' AND type = 'P')
DROP PROCEDURE BROWSE_BY_ACTOR
GO
USE DS2
GO
CREATE PROCEDURE BROWSE_BY_ACTOR
(
@batch_size_in INT,
@actor_in VARCHAR(50)
)
AS
SET ROWCOUNT @batch_size_in
SELECT * FROM PRODUCTS WITH(FORCESEEK) WHERE CONTAINS(ACTOR, @actor_in)
SET ROWCOUNT 0
GO
USE DS2
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'BROWSE_BY_TITLE' AND type = 'P')
DROP PROCEDURE BROWSE_BY_TITLE
GO
USE DS2
GO
CREATE PROCEDURE BROWSE_BY_TITLE
(
@batch_size_in INT,
@title_in VARCHAR(50)
)
AS
SET ROWCOUNT @batch_size_in
SELECT * FROM PRODUCTS WITH(FORCESEEK) WHERE CONTAINS(TITLE, @title_in)
SET ROWCOUNT 0
GO
USE DS2
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'PURCHASE' AND type = 'P')
DROP PROCEDURE PURCHASE
GO
USE DS2
GO
CREATE PROCEDURE PURCHASE
(
@customerid_in INT,
@number_items INT,
@netamount_in MONEY,
@taxamount_in MONEY,
@totalamount_in MONEY,
@prod_id_in0 INT = 0, @qty_in0 INT = 0,
@prod_id_in1 INT = 0, @qty_in1 INT = 0,
@prod_id_in2 INT = 0, @qty_in2 INT = 0,
@prod_id_in3 INT = 0, @qty_in3 INT = 0,
@prod_id_in4 INT = 0, @qty_in4 INT = 0,
@prod_id_in5 INT = 0, @qty_in5 INT = 0,
@prod_id_in6 INT = 0, @qty_in6 INT = 0,
@prod_id_in7 INT = 0, @qty_in7 INT = 0,
@prod_id_in8 INT = 0, @qty_in8 INT = 0,
@prod_id_in9 INT = 0, @qty_in9 INT = 0
)
AS
DECLARE
@date_in DATETIME,
@neworderid INT,
@item_id INT,
@prod_id INT,
@qty INT,
@cur_quan INT,
@new_quan INT,
@cur_sales INT,
@new_sales INT
SET DATEFORMAT ymd
SET @date_in = GETDATE()
--SET @date_in = '2005/10/31'
BEGIN TRANSACTION
-- CREATE NEW ENTRY IN ORDERS TABLE
INSERT INTO ORDERS
(
ORDERDATE,
CUSTOMERID,
NETAMOUNT,
TAX,
TOTALAMOUNT
)
VALUES
(
@date_in,
@customerid_in,
@netamount_in,
@taxamount_in,
@totalamount_in
)
SET @neworderid = @@IDENTITY
-- ADD LINE ITEMS TO ORDERLINES
SET @item_id = 0
WHILE (@item_id < @number_items)
BEGIN
SELECT @prod_id = CASE @item_id WHEN 0 THEN @prod_id_in0
WHEN 1 THEN @prod_id_in1
WHEN 2 THEN @prod_id_in2
WHEN 3 THEN @prod_id_in3
WHEN 4 THEN @prod_id_in4
WHEN 5 THEN @prod_id_in5
WHEN 6 THEN @prod_id_in6
WHEN 7 THEN @prod_id_in7
WHEN 8 THEN @prod_id_in8
WHEN 9 THEN @prod_id_in9
END
SELECT @qty = CASE @item_id WHEN 0 THEN @qty_in0
WHEN 1 THEN @qty_in1
WHEN 2 THEN @qty_in2
WHEN 3 THEN @qty_in3
WHEN 4 THEN @qty_in4
WHEN 5 THEN @qty_in5
WHEN 6 THEN @qty_in6
WHEN 7 THEN @qty_in7
WHEN 8 THEN @qty_in8
WHEN 9 THEN @qty_in9
END
SELECT @cur_quan=QUAN_IN_STOCK, @cur_sales=SALES FROM INVENTORY WHERE PROD_ID=@prod_id
SET @new_quan = @cur_quan - @qty
SET @new_sales = @cur_Sales + @qty
IF (@new_quan < 0)
BEGIN
ROLLBACK TRANSACTION
SELECT 0
RETURN
END
ELSE
BEGIN
UPDATE INVENTORY SET QUAN_IN_STOCK=@new_quan, SALES=@new_sales WHERE PROD_ID=@prod_id
INSERT INTO ORDERLINES
(
ORDERLINEID,
ORDERID,
PROD_ID,
QUANTITY,
ORDERDATE
)
VALUES
(
@item_id + 1,
@neworderid,
@prod_id,
@qty,
@date_in
)
INSERT INTO CUST_HIST
(
CUSTOMERID,
ORDERID,
PROD_ID
)
VALUES
(
@customerid_in,
@neworderid,
@prod_id
)
SET @item_id = @item_id + 1
END
END
COMMIT
SELECT @neworderid
GO
--Added by GSK Create Login and then add users and their specific roles for database
USE [master]
GO
IF NOT EXISTS(SELECT name FROM sys.server_principals WHERE name = 'ds2user')
BEGIN
CREATE LOGIN [ds2user] WITH PASSWORD=N'',
DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
EXEC master..sp_addsrvrolemember @loginame = N'ds2user', @rolename = N'sysadmin'
USE [DS2]
CREATE USER [ds2DS2user] FOR LOGIN [ds2user]
USE [DS2]
EXEC sp_addrolemember N'db_owner', N'ds2DS2user'
USE [master]
CREATE USER [ds2masteruser] FOR LOGIN [ds2user]
USE [master]
EXEC sp_addrolemember N'db_owner', N'ds2masteruser'
USE [model]
CREATE USER [ds2modeluser] FOR LOGIN [ds2user]
USE [model]
EXEC sp_addrolemember N'db_owner', N'ds2modeluser'
USE [msdb]
CREATE USER [ds2msdbuser] FOR LOGIN [ds2user]
USE [msdb]
EXEC sp_addrolemember N'db_owner', N'ds2msdbuser'
USE [tempdb]
CREATE USER [ds2tempdbuser] FOR LOGIN [ds2user]
USE [tempdb]
EXEC sp_addrolemember N'db_owner', N'ds2tempdbuser'
END
GO
[root@isvqe-01 Certification]# cat results/create_db.sql
-- Create Script for Database DS2
-- DVD Store Database Version 2.1 Build, Load and Create Index Script - SQL Server version - Medium DB
-- Copyright (C) 2007 Dell, Inc. <dave_jaffe> and <tmuirhead>
-- Last updated 07/23/2010
IF EXISTS (SELECT * FROM SYSDATABASES WHERE NAME='DS2')
DROP DATABASE DS2
GO
CREATE DATABASE DS2 ON
PRIMARY
(
NAME = 'primary',
FILENAME = '/home/sa/ds.mdf' --Added a placeholder by GSK --This placeholder will be replaced by perl script with the paths given by user
),
FILEGROUP DS_MISC_FG
(
NAME = 'ds_misc',
FILENAME = '/home/sa/ds_misc.ndf',
SIZE = 200MB
),
FILEGROUP DS_CUST_FG
(
NAME = 'cust1',
FILENAME = '/home/sa/cust1.ndf',
SIZE = 600MB
),
(
NAME = 'cust2',
FILENAME = '/home/sa/cust2.ndf',
SIZE = 600MB
),
FILEGROUP DS_ORDERS_FG
(
NAME = 'orders1',
FILENAME = '/home/sa/orders1.ndf',
SIZE = 300MB
),
(
NAME = 'orders2',
FILENAME = '/home/sa/orders2.ndf',
SIZE = 300MB
),
FILEGROUP DS_IND_FG
(
NAME = 'ind1',
FILENAME = '/home/sa/ind1.ndf',
SIZE = 150MB
),
(
NAME = 'ind2',
FILENAME = '/home/sa/ind2.ndf',
SIZE = 150MB
)
LOG ON
(
NAME = 'ds_log',
FILENAME = '/home/sa/ds_log.ldf',
SIZE = 1000MB
)
GO
I ran the playbook: ansible-playbook -l isvqe-02.6a2m.lab.eng.bos.redhat.com site.yml
I verifed that SQL Server was installed on the RHEL 8 system.
[root@isvqe-02 Certification]# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P redhat123! -Q 'select @@version'
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2019 (RTM-CU17) (KB5016394) - 15.0.4249.2 (X64)
Jul 22 2022 12:11:33
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Linux (Red Hat Enterprise Linux 8.7 Beta (Ootpa)) <X64>
(1 rows affected)
Then I ran my test harness against it from node 1.
[root@isvqe-01 drivers]# mono ds2sqlserverdriver.exe --config_file=DriverConfig.txt
Total number of Threads to be Spawned across multiple servers are n_threads: 16
target= isvqe-02 n_threads= 16 ramp_rate= 16 run_time= 10 db_size= 12GB warmup_time= 1 think_time= 0
pct_newcustomers= 5 n_searches= 3 search_batch_size= 5 n_line_items= 5 virt_dir= ds2 page_type= php windows_perf_host= detailed_view= y linux_perf_host=
Using .NET DateTime for measuring response time
Not generating Windows Performance Monitor Counters
Thread 14: created for User 14
Thread 10: created for User 10
Thread 7: created for User 7
Thread 4: created for User 4
Thread 5: created for User 5
Thread 15: created for User 15
Thread 9: created for User 9
Thread 3: created for User 3
Thread 12: created for User 12
Thread 1: created for User 1
Thread 8: created for User 8
Thread 11: created for User 11
Thread 6: created for User 6
Thread 0: created for User 0
Thread 13: created for User 13
Thread 2: created for User 2
Controller (9/2/2022 2:45:09 PM): all threads running
...
Controller (9/2/2022 2:45:19 PM): all threads connected - issuing Start
User name newuser16581472 already exists
et= 10.0 n_overall=9595 opm=57566 rt_tot_lastn_max_msec=58 rt_tot_avg_msec=16 rt_tot_sampled=16 rollbacks: n=203 %= 2.1
User name newuser14770487 already exists
et= 20.0 n_overall=19282 opm=57841 rt_tot_lastn_max_msec=59 rt_tot_avg_msec=15 rt_tot_sampled=15 rollbacks: n=381 %= 2.0
User name newuser17327470 already exists
User name newuser20132562 already exists
et= 30.0 n_overall=28853 opm=57701 rt_tot_lastn_max_msec=49 rt_tot_avg_msec=16 rt_tot_sampled=16 rollbacks: n=573 %= 2.0
User name newuser19254521 already exists
It looks like it works to me.
[root@isvqe-01 drivers]# rpm -qa | grep ansible-collection-micro
ansible-collection-microsoft-sql-1.2.4-1.el9.noarch
FEDORA-2022-c8843968db has been pushed to the Fedora 36 stable repository. If problem still persists, please make note of it in this bug report. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (ansible-collection-microsoft-sql bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2022:8154 |